সাধারণ সিএসভি / ডিএসভি আমদানিকারক


12

সামান্য একজন বিপরীত চেয়ে বেশি এই

ইন:  মাল্টি-লাইন ডিএসভি ডেটা এবং একটি একক ডিলিমিটার অক্ষর। ডিএসভি ফাইল হিসাবে নেওয়া যেতে পারে, একটি ফাইলের নাম, লাইন-ব্রেক পৃথক স্ট্রিং, স্ট্রিংগুলির তালিকা ইত্যাদি All ডেটাতে ডিলিমিটার অক্ষর থাকে না এবং কোনও উদ্ধৃতি বা অব্যাহতকরণ ব্যবস্থা নেই।

আউট:  ডিএসভি উপস্থাপন করে এমন একটি ডেটা স্ট্রাকচার, উদাহরণস্বরূপ স্ট্রিংগুলির তালিকার তালিকা বা স্ট্রিংয়ের একটি ম্যাট্রিক্স।

উদাহরণ

["here is,some,sample","data,delimited,by commas"]এবং ",":
[["here is","some","sample"],["data","delimited","by commas"]]

["hello;\"","\";world","\";\""]এবং ";":
[["hello","\""],["\"","world"],["\"","\""]](পালিয়ে যায় কারণ এই উদাহরণটি JSON ব্যবহার করে)

["to be or not","that is the question"]এবং " ":
[["to","be","or","not"],["that","is","the","question"]]


সুতরাং শুধু স্পষ্ট করার জন্য, আমরা কেবল প্রদত্ত চরের উদাহরণগুলিতে প্রতিটি আইটেমটি বিভক্ত করি?
ETH প্রোডাকশনগুলি

পছন্দ করুন
অ্যাডাম

প্রথম বা শেষ চরিত্রটি ডিলিমিটার হলে আমাদের স্ট্রিংগুলিকে কীভাবে বিভক্ত করা উচিত? ",for,example,this,string,"
জিবি

@ জিবি কোনও ক্ষেত্র খালি নেই
Adám

সুতরাং আমরা ধরে নিতে পারি যে এটি ঘটবে না?
জিবি

উত্তর:


3

জেলি , 3 2 বাইট

ডেনিস দেখিয়েছেন যে 2 বাইট সমাধানটি কাজ না করে দেখায়, ডায়াডিক লিঙ্কটি নিজেই কাজ করে এবং কমান্ড লাইন আর্গুমেন্টগুলি যেভাবে পার্স করা হয় এটি এটি সেইভাবে দেখায়।

ṣ€

এটি অনলাইন চেষ্টা করুন! - ফুটার বাম এবং ডান সেট দিয়ে ফাংশনটিকে স্পষ্টভাবে কল করে এবং গ্রিড হিসাবে ফর্ম্যাট করে।

ডান আর্গুমেন্টের পরিবর্তে ডান আর্গুমেন্টের সমান সাবলিস্টে না গিয়ে ডান যুক্তির ঘটনাগুলিতে বিভক্ত হওয়া ব্যতীত নীচের মতো ঠিক ।


œṣ€

3 byter - পাদচরণ প্রদর্শন একটি গ্রিড * যেমন ফলাফল।

একটি ডায়াডিক লিঙ্ক (ফাংশন) যা বামদিকে ডিএসভি তালিকা এবং ডানদিকে ডিলিমেটার গ্রহণ করে।

কিভাবে?

œṣ€ - Main link: list l, delimiter d
  € - for each item in l:
œṣ  -     split at occurrences of sublists equal to d

* সম্পূর্ণ প্রোগ্রাম হিসাবে অন্তর্নিহিত আউটপুট কেবল সমস্ত অক্ষরকে একসাথে "স্মাশ" করে দেবে, তাই টিআইও লিঙ্কের পাদলেখটি লিঙ্কটিকে একটি ডায়াড হিসাবে কল করে এবং Gফলাফলটি সুন্দরভাবে ফর্ম্যাট করতে ব্যবহার করে।


@ ওক্স এর অন্তর্নিহিত আউটপুটটি সমস্ত চরিত্রকে একসাথে "স্মুশ" করবে
অ্যাডাম

@ ওকএক্স হ্যাঁ এটি এমন একটি ফাংশন যা একটি তালিকা ফিরিয়ে দেয়। পাদচরণটি পুরো প্রোগ্রাম হিসাবে চালিত হওয়ার পরে ঘটে যাওয়া অন্তর্নিহিত আউটপুটকে ওভাররাইড করতে হয়।
জোনাথন অ্যালান

7

জাপট , 3 বাইট

mqV

এটি অনলাইন পরীক্ষা! ( -Qআউটপুটটি সুন্দরভাবে ছাপাতে পতাকা ব্যবহার করে )

mqV  // Implicit: U, V = inputs
m    // Map each item in U by the following function:
 qV  //   Split the item at instances of V.
     // Implicit: output result of last expression

: হে জেএসজিএল এমএটিএলকে পরাজিত করেছে!
ডাউনওয়েট

7

পাওয়ারশেল, 25 22/23 বাইট

দুটি বিকল্প, একটি কেবল প্রথম আরগটিতে বিভক্ত কল করে, দ্বিতীয় আরগটিকে ডিলিম মান হিসাবে ব্যবহার করে।

$args[0]-split$args[1]

এক বাইট দীর্ঘ, CSvs পার্স করার জন্য অন্তর্নির্মিত, ফাইলের নামটিকে প্রথম আরগ হিসাবে এবং দ্বিতীয় হিসাবে ডিলিম নেয়।

ipcsv $args[0] $args[1]

-2 কারণ এটির -Delimiter( -D) পরম প্রয়োজন হয় না এবং এটি ডিফল্টরূপে ধরে নেওয়া হবে।

দুর্ভাগ্যক্রমে পাওয়ারশেল দুটি প্যারামের অ্যারে পাস করতে পারে না, কারণ এটি ধরে নেবে যে তারা উভয় ফাইল, এবং এর বিরুদ্ধে দু'বার কমান্ড চালাবে, অন্য যে কোনও দ্বি-বর্ণের ইনপুট পদ্ধতি আমি যতদূর দেখতে পাচ্ছি তার চেয়ে কম নয়, সুতরাং এটি সম্ভবত সংক্ষিপ্ততম উত্তর।

ipcsvএটির জন্য Import-Csvএকটি উপাম, প্রথম নামবিহীন ইনপুট হিসাবে একটি ফাইলের নাম নেয় এবং ডিফল্ট অক্ষর দ্বারা দ্বিতীয় হিসাবে ডিলিম অক্ষর হয়।

উইকি পৃষ্ঠার প্রত্যাবর্তন থেকে উদাহরণের বিরুদ্ধে চালান

PS C:\Users\Connor\Desktop> .\csvparse.ps1 'example.csv' ','

Date     Pupil               Grade
----     -----               -----
25 May   Bloggs, Fred        C
25 May   Doe, Jane           B
15 July  Bloggs, Fred        A
15 April Muniz, Alvin "Hank" A


5

হাস্কেল, 29 বাইট

import Data.Lists
map.splitOn

ব্যবহারের উদাহরণ: (map.splitOn) " " ["to be or not","that is the question"]-> [["to","be","or","not"],["that","is","the","question"]]




4

গণিত, 11 বাইট

StringSplit

বিল্টিন ফাংশন দুটি আর্গুমেন্ট, স্ট্রিংগুলির একটি তালিকা এবং একটি অক্ষর (এবং এর চেয়ে আরও সাধারণ) গ্রহণ করে। ব্যবহারের উদাহরণ:

StringSplit[{"to be or not", "that is the question"}, " "]

উৎপাদনের

{{"to", "be", "or", "not"}, {"that", "is", "the", "question"}}

4

ম্যাটল্যাব / অক্টোবায়, 41 25 বাইট

@(x,d)regexp(x,d,'split')

নামে একটি বেনামি ফাংশন তৈরি করে ansযা প্রথম ইনপুটটিকে স্ট্রিংয়ের সেল অ্যারে হিসাবে এবং দ্বিতীয় ইনপুটটিকে স্ট্রিং হিসাবে গ্রহণ করে।

ans({'Hello World', 'How are you'}, ' ')

অনলাইনে চেষ্টা করুন


4

চেদার, 19 বাইট

a->b->a=>@.split(b)

লুপিংয়ের দক্ষতার দুর্দান্ত প্রদর্শন। আমি নতুন রচনা এবং এফ। ব্লক যাতে আকর্ষণীয় গল্ফিং জন্য অনুমতি দেয়। (=>:@.split)কাজ করার কথা থাকলেও তা হয় না :(


3

এমএটিএল, 14 12 4 বাইট

H&XX

এমএটিএল অনলাইনে এটি ব্যবহার করে দেখুন (আউটপুট সেল অ্যারেটির মাত্রা দেখানোর জন্য লিঙ্কটির শেষে একটি পরিবর্তন রয়েছে)।

ব্যাখ্যা

        % Implicitly grab the first input as a cell array of strings
        % Implicitly grab the delimiter as a string
H       % Push the number literal 2 to the stack
&XX     % Split the input at each appearance of the delimiter
        % Implicitly display the result


1

রুবি '-n', 17 + 1 = 18 বাইট ব্যবহার করে

p chomp.split *$*

কিভাবে এটা কাজ করে

  • ফাইল থেকে ইনপুট
  • বিভাজক কমান্ড লাইন প্যারামিটার হিসাবে দেওয়া হয়
  • যেহেতু আমাদের কেবল 1 টি প্যারামিটার রয়েছে, *$*স্ট্রিংটি স্প্ল্যাট করে এবং আমরা এটি splitফাংশনের প্যারামিটার হিসাবে ব্যবহার করতে পারি
  • আমি এড়াতে চেষ্টা করেছি chompতবে অন্য কোনও সমাধান এর চেয়ে বেশি দীর্ঘ বলে মনে হচ্ছে।


1

জিএনইউ সেড , 48 + 1 (আর পতাকা) = 49 বাইট

1h;1d
:
G
/,$/bp
s:(.)(.*)\n\1:,\2:
t
:p;s:..$::

এটি অনলাইন চেষ্টা করুন!

সেডে কোনও ডেটা টাইপ নেই, তবে তালিকার প্রাকৃতিক উপস্থাপনা হ'ল লাইনের সংগ্রহ। যেমন, ইনপুট ফর্ম্যাটটিতে প্রতিটি আলাদা লাইনে ডিএসভি রেকর্ড থাকে, প্রথম লাইনে ডিলিমিটার উপস্থিত থাকে।

ব্যাখ্যা: ডিজাইনের দ্বারা, সেড স্ক্রিপ্টটি যতবার ইনপুট লাইন রয়েছে ততবার চালায়

1h;1d                  # store delimiter, start new cycle
:                      # begin loop
G                      # append saved delimiter
/,$/bp                 # if delimiter is ',', skip replacements and go to printing
s:(.)(.*)\n\1:,\2:     # replace first occurrence of delimiter with ','
t                      # repeat
:p;s:..$::             # print label: delete appended delimiter (implicit printing)

1

রেক্সএক্স, 95 বাইট

arg f d
do l=1 while lines(f)
    n=linein(f)
    do #=1 while n>''
        parse var n w (d) n
        o.l.#=w
    end
end

ফাইলের নাম এবং একটি ডিলিমিটারকে আর্গুমেন্ট হিসাবে গ্রহণ করে, ফাইলের বিষয়বস্তুগুলি স্টেমে রাখে o


সত্যিই কি এই সাদা জায়গাগুলি প্রয়োজনীয়?
অ্যাডাম

না, আমি কেবল এটি পঠনযোগ্যতার জন্য যুক্ত করেছি। বাইট গণনাটি আনইন্ডেন্টেড কোডের জন্য।
idrougge

এটি রেক্সএক্সের কোন স্বাদ?
অ্যাডাম

আমি মনে করি এটি খাঁটি এএনএসআই রেক্সএক্স। আমি কেবল রেজিনার সাথে এটি পরীক্ষা করেছি।
idrougge


0

এপিএল (ডায়ালগ) , 4 বাইট

15.0 পর্যন্ত সংস্করণগুলিতে এবং এর ⎕ML←3অনেকগুলি দ্বারা ডিফল্ট হওয়া দরকার । সংস্করণ 16.0 থেকে কেবল একই প্রভাবের জন্য প্রতিস্থাপন করা যেতে পারে ।

বাম আর্গুমেন্ট এবং ডিএসভিকে ডান আর্গুমেন্ট হিসাবে পৃথককারী লাগে।

≠⊂¨⊢

এটি অনলাইন চেষ্টা করুন!

 অসমতা (বাম তর্ক এবং ডান আর্গুমেন্টের)

⊂¨ প্রতিটি বিভাজন

 সঠিক যুক্তি

পার্টিশনের দ্বারা বাম আর্গুমেন্টের সাথে সম্পর্কিত শূন্য দ্বারা নির্দেশিত সমস্ত উপাদান সরিয়ে ফেলা এবং নতুন পার্টিশনটি শুরু করা যখনই বাম আর্গুমেন্টের সাথে সম্পর্কিত সংখ্যাটি তার পূর্বসূরীর চেয়ে বড় হয়, অর্থাৎ বাম আর্গুমেন্ট বুলিয়ান হিসাবে প্রতিটি হিসাবে এখানে মামলা।


0

আর, 8 বাইট (2 উপায়)

আর এর দুটি বিল্টিন ফাংশন রয়েছে যা এই চ্যালেঞ্জের প্রয়োজনীয়তাগুলি পূরণ করে:

strsplit

স্ট্রিং এবং বিভাজকের একটি ভেক্টর নেয় এবং পৃথক স্ট্রিংয়ের ভেক্টরের একটি তালিকা প্রদান করে।

read.csv

একটি ফাইলের নাম এবং পৃথককারী নেয় এবং একটি ডেটা ফ্রেম দেয় frame প্রযুক্তিগতভাবে এটি 10 ​​বাইট হতে পারে কারণ এটির বিকল্প প্রয়োজন header=Fতাই এটি কলামের নাম হিসাবে প্রথম উপাদানগুলি পড়বে না। বর্তমানে টিআইও লিঙ্কটি স্টিডিন থেকে পড়ে reads

এই অনলাইন চেষ্টা করুন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.