একটি সিএসভি ফাইলে কমা নিয়ে কাজ করা


472

আমি কীভাবে তৈরি করা হচ্ছে এমন সিএসভি ফাইল পরিচালনা করতে, তারপরে আমাদের গ্রাহকদের দ্বারা আপলোড করা এবং কোম্পানির নামের মতো একটি মান কমা থাকতে পারে সে সম্পর্কে পরামর্শের সন্ধান করছি।

আমরা যে ধারনাগুলির দিকে নজর দিচ্ছি সেগুলি হ'ল: উদ্ধৃত আইডেন্টিফায়ার্স (মান "," মান "," ইত্যাদি) বা একটি ব্যবহার করে | কমা পরিবর্তে। বৃহত্তম সমস্যাটি হ'ল আমাদের এটিকে সহজ করতে হবে, বা গ্রাহক এটি করবেন না won't


গ্রাহক এটি লিখছেন এবং এটি আপলোড করছেন
বব দ্য জানিটর

1
সিএসভি ফাইলে কমোজের অভ্যন্তরীণ পরিচালনা করার সমাধানটি এখানে। দর্শন stackoverflow.com/questions/9889225/...
হাসান আবরার

iOS এ মূলত আপনি ব্যবহার করা আবশ্যক github.com/Flinesoft/CSVImporter
Fattie

3
মনে রাখবেন এই কিউএটি পুরানো। আজকাল সিএসভির অর্থ আরএফসি 4180 এবং এটি।
ফ্যাটি

আমার ঠিক একই সমস্যা আছে, একটি সিএসভি ফাইলে কলামটি পৃথক করে মোট কলাম করার চেষ্টা করছি। একটি awk কমান্ড নিয়ে সমস্যা নেই। দুর্ভাগ্যক্রমে কিছু কক্ষগুলিতে কমা থাকতে পারে (উদাহরণস্বরূপ কোনও ঠিকানায়), অন্য কোষগুলি তা করে না। একটি লিনাক্স সামঞ্জস্যপূর্ণ সমাধান খুঁজছেন তবে কোথায় শুরু করবেন তা নিশ্চিত নয়।
সবুজ

উত্তর:


223

অন্যরা যেমন বলেছে, আপনার মূল্যবোধগুলি অন্তর্ভুক্ত থাকতে হবে escape এখানে সিএ-তে একটি সামান্য সিএসভি রিডার রয়েছে যা এম্বেডড কোটস এবং ক্যারেজ রিটার্ন সহ উদ্ধৃত মানগুলিকে সমর্থন করে।

যাইহোক, এটি ইউনিট-পরীক্ষিত কোড। আমি এখনই এটি পোস্ট করছি কারণ এই প্রশ্নটি অনেক বেশি উপস্থিত হবে বলে মনে হচ্ছে এবং যখন সাধারণ সিএসভি সমর্থন করবে তখন অন্যরা একটি সম্পূর্ণ লাইব্রেরিটি না চাইতে পারে।

আপনি নিম্নলিখিত হিসাবে এটি ব্যবহার করতে পারেন:

using System;
public class test
{
    public static void Main()
    {
        using ( CsvReader reader = new CsvReader( "data.csv" ) )
        {
            foreach( string[] values in reader.RowEnumerator )
            {
                Console.WriteLine( "Row {0} has {1} values.", reader.RowIndex, values.Length );
            }
        }
        Console.ReadLine();
    }
}

এখানে ক্লাস হয়। মনে রাখবেন যে আপনি Csv.Escapeবৈধ সিএসভি লিখতেও ফাংশনটি ব্যবহার করতে পারেন ।

using System.IO;
using System.Text.RegularExpressions;

public sealed class CsvReader : System.IDisposable
{
    public CsvReader( string fileName ) : this( new FileStream( fileName, FileMode.Open, FileAccess.Read ) )
    {
    }

    public CsvReader( Stream stream )
    {
        __reader = new StreamReader( stream );
    }

    public System.Collections.IEnumerable RowEnumerator
    {
        get {
            if ( null == __reader )
                throw new System.ApplicationException( "I can't start reading without CSV input." );

            __rowno = 0;
            string sLine;
            string sNextLine;

            while ( null != ( sLine = __reader.ReadLine() ) )
            {
                while ( rexRunOnLine.IsMatch( sLine ) && null != ( sNextLine = __reader.ReadLine() ) )
                    sLine += "\n" + sNextLine;

                __rowno++;
                string[] values = rexCsvSplitter.Split( sLine );

                for ( int i = 0; i < values.Length; i++ )
                    values[i] = Csv.Unescape( values[i] );

                yield return values;
            }

            __reader.Close();
        }
    }

    public long RowIndex { get { return __rowno; } }

    public void Dispose()
    {
        if ( null != __reader ) __reader.Dispose();
    }

    //============================================


    private long __rowno = 0;
    private TextReader __reader;
    private static Regex rexCsvSplitter = new Regex( @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))" );
    private static Regex rexRunOnLine = new Regex( @"^[^""]*(?:""[^""]*""[^""]*)*""[^""]*$" );
}

public static class Csv
{
    public static string Escape( string s )
    {
        if ( s.Contains( QUOTE ) )
            s = s.Replace( QUOTE, ESCAPED_QUOTE );

        if ( s.IndexOfAny( CHARACTERS_THAT_MUST_BE_QUOTED ) > -1 )
            s = QUOTE + s + QUOTE;

        return s;
    }

    public static string Unescape( string s )
    {
        if ( s.StartsWith( QUOTE ) && s.EndsWith( QUOTE ) )
        {
            s = s.Substring( 1, s.Length - 2 );

            if ( s.Contains( ESCAPED_QUOTE ) )
                s = s.Replace( ESCAPED_QUOTE, QUOTE );
        }

        return s;
    }


    private const string QUOTE = "\"";
    private const string ESCAPED_QUOTE = "\"\"";
    private static char[] CHARACTERS_THAT_MUST_BE_QUOTED = { ',', '"', '\n' };
}

2
আপনার প্রয়োগের উপর নির্ভর করে আপনার উইন্ডোজ সম্মতিতে liance r \ n অনুবাদ করতেও হতে পারে।
ম্যান্ড্রেকে

3
@ নাডা নাeম, কি বিস্তারিত বলবেন?
হার্পো

এটি কোনও সিএসভি ফাইল সারিতে আইটেমগুলি সঠিকভাবে গণনা করছে না, এটি ক্ষেত্র এবং সাহসী রিটার্ন এবং ট্যাপগুলিতে
কমাগুলির

-1 ওপি ফাইল তৈরি করে এমন কোনও ভাষা নির্দিষ্ট করে না। যদি অন্য কোনও প্রোগ্রামার যদি সি # তে তবে যে কোনও ভাষায় সমাধানের সন্ধান করতে আসে তবে তারা এই উত্তরটিতে তারা যে সমাধানটি ব্যবহার করতে পারে তা পাবে না।
বেন লেগজিও

8
@ বেনসি.আর. লেগজিওরো, তবে আমি মনে করি আপনার প্রশ্নটিও অবশ্যই নীচে নামিয়ে আনতে হবে কারণ এটি আপনার মানদণ্ডে অযোগ্য পরিবর্তনযোগ্য। যেমনটি হ'ল, কোডটি একটি সাধারণ অনুমানের আনুষ্ঠানিক বাস্তবায়নের সমান এবং সহজেই ব্যবহৃত কোনও সাধারণ ভাষায় অনুবাদ করা যায়।
হার্পো

395

2017 এর জন্য, সিএসভি সম্পূর্ণরূপে নির্দিষ্ট করা হয়েছে - আরএফসি 4180।

এটি একটি খুব সাধারণ স্পেসিফিকেশন, এবং সম্পূর্ণরূপে অনেকগুলি লাইব্রেরি দ্বারা আবৃত ( উদাহরণ )।

সহজেই উপলব্ধ যে কোনও সিএসভি লাইব্রেরি ব্যবহার করুন - এটি আরএফসি 4180 বলতে হয়।


আসলে সিএসভি ফর্ম্যাট এবং কীভাবে কমাগুলি পরিচালনা করতে হবে তার একটি বিশদ রয়েছে:

লাইন ব্রেক (সিআরএলএফ), ডাবল উদ্ধৃতি এবং কমাগুলি সহ ক্ষেত্রগুলি ডাবল-কোটে আবদ্ধ থাকতে হবে।

http://tools.ietf.org/html/rfc4180

সুতরাং, মান আছে fooএবং bar,baz, আপনি এটি করতে:

foo,"bar,baz"

বিবেচনা করার জন্য আরেকটি গুরুত্বপূর্ণ প্রয়োজন:

যদি ক্ষেত্রগুলি আবদ্ধ করতে ডাবল-কোট ব্যবহার করা হয়, তবে ক্ষেত্রের অভ্যন্তরে একটি ডাবল-উদ্ধৃতি অবশ্যই অন্য একটি ডাবল উদ্ধৃতি সহ এর আগে পলায়ন করতে হবে। উদাহরণ স্বরূপ:

"aaa","b""bb","ccc"

120
"লাইন ব্রেক (সিআরএলএফ), ক্ষেত্রগুলিতে ডাবল কোট এবং কমাগুলি ডাবল-কোটে আবদ্ধ করা উচিত" "
এলি

42
"যদি ক্ষেত্রগুলি আবদ্ধ করতে ডাবল-কোট ব্যবহার করা হয়, তবে ক্ষেত্রের অভ্যন্তরে একটি দ্বৈত উদ্ধৃতি অবশ্যই অন্য একটি ডাবল উদ্ধৃতি দিয়ে তার আগে পালাতে হবে।"
সি ড্রাগন 76

11
সত্যিই কোনও অনুমান নয়, তবে সম্ভবত এটি কার্যকর। এটি বলে ... "অস্তিত্বের কোনও আনুষ্ঠানিক স্পেসিফিকেশন নেই, যা সিএসভি ফাইলগুলির বিভিন্ন ধরণের ব্যাখ্যার অনুমতি দেয় This এই বিভাগটি এমন ফর্ম্যাটটি নথিভুক্ত করে যা বেশিরভাগ বাস্তবায়ন অনুসরণ করে বলে মনে হয়।"
জাস্টিন ক্লার্ক

5
এছাড়াও, ভুলে যাবেন না যে এর নাম থাকা সত্ত্বেও, সারির সিএসভি মানগুলি কেবল কমা দ্বারা পৃথক করা যেতে পারে - কমপক্ষে উইন্ডোজ প্ল্যাটফর্মগুলিতে। এটা বর্তমান আঞ্চলিক সেটিংস উপর নির্ভর করে (intl.cpl কমান্ড লাইনে, "উন্নত সেটিংস"), বিশেষ করে, তালিকা বিভাজক মধ্যে: System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator
lxa

4
দয়া করে এই উত্তরটিতে প্রাসঙ্গিক তথ্য রাখুন, লিঙ্কের সাথে ক) উপরের মন্তব্যগুলির বেশিরভাগ সরান (এবং আমার), খ) উত্তরদাতার চেয়ে আরও অনেক লোককে অন্য পৃষ্ঠায় যাওয়ার সময় সংরক্ষণ করুন এবং প্রাসঙ্গিক সন্ধান করুন ডেটা, সি) লিঙ্ক রট প্রতিরোধ করুন।
ব্যবহারকারী 66001

76

সিএসভি ফর্ম্যাটটি পৃথক মানগুলির জন্য কমাগুলি ব্যবহার করে, মানগুলি যা ক্যারেজ রিটার্ন, লাইনফিডস, কমা বা ডাবল উদ্ধৃতিগুলি ডাবল-কোট দ্বারা বেষ্টিত থাকে separate ডাবল উক্তি সমেত মানগুলি উদ্ধৃত হয় এবং প্রতিটি আক্ষরিক উদ্ধৃতি তাত্ক্ষণিক পূর্ববর্তী উদ্ধৃতি দ্বারা পালিয়ে যায়: উদাহরণস্বরূপ, 3 টি মান:

test
list, of, items
"go" he said

হিসাবে এনকোড করা হবে:

test
"list, of, items"
"""go"" he said"

যে কোনও ক্ষেত্রের উদ্ধৃতি দেওয়া যেতে পারে তবে কেবলমাত্র ক্ষেত্রগুলিতে কমা, সিআর / এনএল, বা উদ্ধৃতি অবশ্যই উদ্ধৃত করতে হবে।

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

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


40

স্ট্রিংয়ের চারপাশে ডাবল কোট রাখুন। এটি সাধারণত এক্সেল করে

আলা এলি,

আপনি দুটি ডাবল উদ্ধৃতি হিসাবে একটি ডাবল উদ্ধৃতি এড়ানো। যেমন "টেস্ট 1", "ফু" "বার", "টেস্ট 2"


মূলত উদ্ধৃত আইডেন্টিফায়ারদের মতো একই ধারণা
বব দ্য জ্যানিটর

1
আপনি দুটি ডাবল উদ্ধৃতি হিসাবে একটি ডাবল উদ্ধৃতি এড়ানো। যেমন "টেস্ট 1", "ফু" "বার", "টেস্ট 2"
এলি

স্ট্রিংয়ের চারপাশে ডাবল কোট লাগানো কার্যকর হয় না যখন "কমা দ্বারা তত্ক্ষণাত্ অনুসরণ করা হয়
মন্ডকিন

9

আপনি ক্ষেত্রের চারপাশে ডাবল উদ্ধৃতি রাখতে পারেন। আমি এই পদ্ধতির পছন্দ করি না, কারণ এটি আরও একটি বিশেষ চরিত্র (ডাবল উদ্ধৃতি) যুক্ত করে। কেবলমাত্র একটি পালানোর চরিত্রটি নির্ধারণ করুন (সাধারণত ব্যাকস্ল্যাশ) এবং যেখানে কোনও কিছু থেকে রক্ষা পাওয়ার জন্য যেখানে প্রয়োজন সেখানে এটি ব্যবহার করুন:

ডেটা, আরও ডেটা, আরও ডেটা even, এমনকি, আরও অনেক কিছু

আপনাকে উদ্ধৃতি মিলের চেষ্টা করতে হবে না এবং বিশ্লেষণ করার ব্যতিক্রম আপনার কাছে কম। এটি আপনার কোডও সরল করে তোলে।


3
দ্রুত এবং নোংরা তবে আপনার যদি বাস্তবে "\" রয়েছে এমন একটি এন্ট্রি থাকে তবে কাজ করে না
সরপ কেয়া

1
সার্প, সে কারণেই ডাবল an হ'ল পালানো ব্যাকস্ল্যাশ, যেহেতু এখন এটি অন্য একটি বিশেষ চরিত্রে পরিণত হয়েছে।
গ্রুনংডোলা

1
এটি কাজ করে, তবে সিএসভি নয়। এটি একটি ডিএসভি
ট্রিগ

8

কোনও সুগঠিত সিএসভি (। নেট) - সিএসভিহেলপারের সাথে কাজ করার জন্য নুগেটের মাধ্যমে একটি লাইব্রেরি রয়েছে available

ক্লাসে মানচিত্রের উদাহরণ:

var csv = new CsvReader( textReader );
var records = csv.GetRecords<MyClass>();

পৃথক ক্ষেত্রগুলি পড়ার উদাহরণ:

var csv = new CsvReader( textReader );
while( csv.Read() )
{
    var intField = csv.GetField<int>( 0 );
    var stringField = csv.GetField<string>( 1 );
    var boolField = csv.GetField<bool>( "HeaderName" );
}

ক্লায়েন্টকে ফাইল ফর্ম্যাটটি ড্রাইভ করা:
, স্ট্যান্ডার্ড ফিল্ড ডিলিমিটার, "হ'ল এমন মানক মান যা ক্ষেত্রগুলিতে একটি ডিলিমিটার, উদ্ধৃতি বা লাইন সমাপ্তি থেকে বাঁচতে ব্যবহৃত হয়।

#ক্ষেত্রগুলির 'জন্য এবং পলায়নের জন্য (উদাহরণস্বরূপ) ব্যবহার করতে :

var csv = new CsvReader( textReader );
csv.Configuration.Delimiter = "#";
csv.Configuration.Quote = ''';
// read the file however meets your needs

আরও ডকুমেন্টেশন


3
CsvHelperওপির সমস্যা সমাধানের জন্য লাইব্রেরিটি কীভাবে ব্যবহার করতে হয় তার একটি উদাহরণ অন্তর্ভুক্ত করা ভাল '
জর্জ স্টকার 0

কেন প্রায় সব কিছু আছে। নেট একজন "সহায়ক" হয়ে উঠেছে ... শব্দটি অর্থহীন ... "ম্যানেজার" এর মতো।
বাইটেডেভ

5

হার্পোর জবাব সম্পর্কে আমার মন্তব্যে যেমন উল্লেখ করা হয়েছে, তার সমাধানটি বেশ ভাল এবং বেশিরভাগ ক্ষেত্রেই কাজ করে, তবে কিছু পরিস্থিতিতে যখন একে অপরের সাথে সরাসরি সংলগ্ন কমাগুলি কমাতে বিভাজন করতে ব্যর্থ হয়।

রেজেক্স স্ট্রিংটি উল্লম্বিম স্ট্রিং হিসাবে অপ্রত্যাশিতভাবে আচরণ করার কারণে এটি ঘটে। এই আচরণটি সঠিক হওয়ার জন্য, রেজেক্স স্ট্রিংয়ের সমস্ত "অক্ষরগুলিকে উল্লম্বিম এস্কেপ ব্যবহার না করে ম্যানুয়ালি পলায়ন করা দরকার।

অর্থাৎ। ম্যানুয়াল পলায়ন ব্যবহার করে রেজেক্সটি হওয়া উচিত:

",(?=(?:[^\"\"]*\"\"[^\"\"]*\"\")*(?![^\"\"]*\"\"))"

যা অনুবাদ করে ",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))"

কোনও ভার্টাবিম স্ট্রিং ব্যবহার করার সময় @",(?=(?:[^""]*""[^""]*"")*(?![^""]*""))"এটি নীচের মতো আচরণ করে আপনি দেখতে পাচ্ছেন আপনি রিজেক্সটি ডিবাগ করেছেন কিনা:

",(?=(?:[^"]*"[^"]*")*(?![^"]*"))"

সুতরাং সংক্ষেপে, আমি হার্পোর সমাধানের প্রস্তাব দিচ্ছি, তবে এই ছোট্ট গোছার দিকে নজর রাখুন!

এই ত্রুটিটি দেখা দিলে আপনাকে অবহিত করার জন্য আমি সিএসভিআডারকে সামান্য alচ্ছিক ব্যর্থ ব্যর্থতার অন্তর্ভুক্ত করেছি (যদি আপনার কাছে কলামগুলির একটি পূর্ব পরিচিত নম্বর রয়েছে):

if (_expectedDataLength > 0 && values.Length != _expectedDataLength) 
throw new DataLengthException(string.Format("Expected {0} columns when splitting csv, got {1}", _expectedDataLength, values.Length));

এটি কনস্ট্রাক্টরের মাধ্যমে ইনজেকশন দেওয়া যেতে পারে:

public CsvReader(string fileName, int expectedDataLength = 0) : this(new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
    _expectedDataLength = expectedDataLength;
}

আপনি কীভাবে শিরোনাম সারিটি পরিচালনা করছেন? আমি সিএসভিকে সি # অবজেক্টে সব ধরণের মানচিত্র তৈরি করার চেষ্টা করছি, তবে শিরোনাম সারিটি এটি ভেঙে দেয় কারণ এর সমস্ত স্ট্রিং ...
tCoe

নয় [^""]হিসাবে একই [^"]? একটি অক্ষর শ্রেণীর নির্দিষ্টকরণের ভিতরে একটি চরিত্রের অনুলিপি অপ্রয়োজনীয়, তাই না?
মিনহ ট্রান

4

মাইক্রোসফ্টে একটি রেফারেন্স যুক্ত করুন is ভিজুয়ালবাসিক (হ্যাঁ, এটি ভিজ্যুয়াল বেসিক বলে তবে এটি সি # তেও কাজ করে - মনে রাখবেন যে এটি শেষে কেবলমাত্র আইএল)।

Microsoft.VisualBasic.FileIO.TextFieldParserCSV ফাইল পার্স করতে ক্লাসটি ব্যবহার করুন এখানে নমুনা কোডটি রয়েছে:

 Dim parser As TextFieldParser = New TextFieldParser("C:\mar0112.csv")
 parser.TextFieldType = FieldType.Delimited
 parser.SetDelimiters(",")      

   While Not parser.EndOfData         
      'Processing row             
      Dim fields() As String = parser.ReadFields         
      For Each field As String In fields             
         'TODO: Process field                   

      Next      
      parser.Close()
   End While 

হ্যাঁ, এটি কিছুটা দুর্ভাগ্যজনক নেমস্পেস ;-)- এ একটি খুব দরকারী বর্গ। মূল প্রশ্নটি parser.HasFieldsEnclosedInQuotes = true;সমাধান করার জন্য, আপনাকেও সেট করা উচিত এবং ইনপুট ফাইলের CSV অনুমান অনুসারে কোটায় কমা থাকা ক্ষেত্রগুলি আবদ্ধ করা দরকার - এক্সেল এটি ইতিমধ্যে করেছে।
ক্রিস্টোফার কিং ২

4

আপনি বিকল্প "পছন্দসীমা" যেমন "ব্যবহার করতে পারেন;" বা "|" তবে সর্বাধিক সহজভাবে উদ্ধৃতি দেওয়া হতে পারে যা বেশিরভাগ (শালীন) সিএসভি লাইব্রেরি এবং সর্বাধিক শালীন স্প্রেডশিট দ্বারা সমর্থিত।

জন্য বিভেদক বর্ণনা এবং এই ওয়েব পেজ দেখতে উদ্ধৃত জন্য CSV বিভেদক উপর আরো এবং একটি প্রমিত বিন্যাস জন্য একটি বৈশিষ্ট


4

যদি আপনি একটি আছেন * স্নো-সিস্টেম , এক্সেস আছে sedএবং এক বা একাধিক হতে পারে শুধুমাত্র একটি অবাঞ্ছিত কমা নির্দিষ্ট ক্ষেত্র আপনার CSV, আপনি তাদের মধ্যে ঘিরা করার জন্য নিম্নলিখিত এক-লাইনের ব্যবহার করতে পারেন "যেমন RFC4180 অনুচ্ছেদ 2 প্রস্তাব:

sed -r 's/([^,]*,[^,]*,[^,]*,)(.*)(,.*,.*)/\1"\2"\3/' inputfile

কোন ক্ষেত্রের উপর নির্ভর করে অবাঞ্ছিত কমা (গুলি) আপনাকে থাকতে পারে রেজেক্স (এবং বিকল্প) এর ক্যাপচারিং গ্রুপগুলিকে পরিবর্তন / প্রসারিত করতে হবে।
উপরের উদাহরণটি উদ্ধৃতি চিহ্নগুলিতে চতুর্থ ক্ষেত্রটি (ছয়টির মধ্যে) আবদ্ধ করবে।

এখানে চিত্র বর্ণনা লিখুন

--in-place-শক্তিটির সাথে সম্মিলিতভাবে আপনি এই পরিবর্তনগুলি সরাসরি ফাইলে প্রয়োগ করতে পারেন।

সঠিক রেজেক্স "বিল্ড" করার জন্য, অনুসরণ করার একটি সহজ নীতি রয়েছে:

  1. আপনার সিএসভিতে প্রতিটি ক্ষেত্রের জন্য যা ক্ষেত্রের আগে অযাচিত কমা (গুলি) নিয়ে আসে [^,]*,এবং আপনি সেগুলি একটি ক্যাপচারিং গ্রুপে রেখে দেন।
  2. যে ফিল্ডটিতে আপনি লিখছেন অবাঞ্ছিত কমা (গুলি) রয়েছে (.*)
  3. অবাঞ্ছিত কমা (গুলি) দিয়ে মাঠের পরে প্রতিটি ক্ষেত্রের জন্য আপনি একটি লিখুন ,.* এবং সেগুলি একটি ক্যাপচারিং গ্রুপে একসাথে রাখুন।

নির্দিষ্ট ক্ষেত্রের উপর নির্ভর করে বিভিন্ন সম্ভাব্য রেজিজেস / বিকল্পগুলির সংক্ষিপ্ত বিবরণ এখানে দেওয়া হল। যদি না দেওয়া হয় তবে প্রতিস্থাপনটি হচ্ছে \1"\2"\3

([^,]*)(,.*)                     #first field, regex
"\1"\2                           #first field, substitution

(.*,)([^,]*)                     #last field, regex
\1"\2"                           #last field, substitution


([^,]*,)(.*)(,.*,.*,.*)          #second field (out of five fields)
([^,]*,[^,]*,)(.*)(,.*)          #third field (out of four fields)
([^,]*,[^,]*,[^,]*,)(.*)(,.*,.*) #fourth field (out of six fields)

আপনি যদি sedউদ্ধৃতি চিহ্নগুলি দিয়ে ঘেরার পরিবর্তে অযাচিত কমা (গুলি) মুছে ফেলতে চান তবে এই উত্তরটি দেখুন


3

আপনি যদি চাকাটিকে পুনর্বিবেচনার মতো মনে করেন তবে নিম্নলিখিতগুলি আপনার পক্ষে কাজ করতে পারে:

public static IEnumerable<string> SplitCSV(string line)
{
    var s = new StringBuilder();
    bool escaped = false, inQuotes = false;
    foreach (char c in line)
    {
        if (c == ',' && !inQuotes)
        {
            yield return s.ToString();
            s.Clear();
        }
        else if (c == '\\' && !escaped)
        {
            escaped = true;
        }
        else if (c == '"' && !escaped)
        {
            inQuotes = !inQuotes;
        }
        else
        {
            escaped = false;
            s.Append(c);
        }
    }
    yield return s.ToString();
}

3

ইউরোপে আমাদের এই সমস্যাটি অবশ্যই এই প্রশ্নের আগে হওয়া উচিত। ইউরোপে আমরা দশমিক পয়েন্টের জন্য সমস্ত কমা ব্যবহার করি। এই সংখ্যাগুলি নীচে দেখুন:

| American      | Europe        |
| ------------- | ------------- |
| 0.5           | 0,5           |
| 3.14159265359 | 3,14159265359 |
| 17.54         | 17,54         |
| 175,186.15    | 175.186,15    |

সুতরাং সিএসভি ফাইলগুলির জন্য কমা বিভাজক ব্যবহার করা সম্ভব নয়। যে কারণে, ইউরোপের সিএসভি ফাইলগুলি একটি সেমিকোলন ( ;) দ্বারা পৃথক করা হয় ।

মাইক্রোসফ্ট এক্সেলের মতো প্রোগ্রামগুলি সেমিকোলনযুক্ত ফাইলগুলি পড়তে পারে এবং বিভাজক থেকে স্যুইচ করা সম্ভব। এমনকি \tবিভাজক হিসাবে আপনি একটি ট্যাব ( ) ব্যবহার করতে পারেন । রাতের খাবারের ব্যবহারকারীর কাছ থেকে এই উত্তরটি দেখুন ।


2

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

নিবন্ধটি সি # ব্যবহার করে এবং কোডটি ডাউনলোড করতে নীচে একটি লিঙ্ক রয়েছে।


1

এখানে একটি ঝরঝরে সামান্য পরিশ্রম:

পরিবর্তে আপনি গ্রীক লোয়ার সংখ্যার সাইন ব্যবহার করতে পারেন (U + 0375)

দেখে মনে হচ্ছে এটি ͵

এই পদ্ধতিটি ব্যবহার করা আপনার প্রচুর সংস্থান সংরক্ষণ করে ...


1

নুগেটে কেবল সফটক্রিসিটস.সিএসভিপার্সার ব্যবহার করুন। এটি আপনার জন্য এই সমস্ত বিবরণ পরিচালনা করবে এবং খুব বড় ফাইলগুলিকে দক্ষতার সাথে পরিচালনা করবে। এবং, যদি প্রয়োজন হয়, এটি এমনকি কলামগুলি ম্যাপিংয়ের মাধ্যমে অবজেক্ট বৈশিষ্ট্যগুলিতে আমদানি / রফতানি করতে পারে। তদতিরিক্ত, আমার পরীক্ষাগুলি এটিকে জনপ্রিয় সিএসভিহেল্পারের চেয়ে প্রায় 4 গুণ বেশি দ্রুত দেখায়।


0

এটি সাধারণ অনুশীলনের বিষয়ে যেমন চলুন তবে থাম্বের নিয়ম থেকে শুরু করা যাক:

  1. সিএসভি ব্যবহার করবেন না, পরিবর্তে এক্সএমএল ফাইলটি পড়তে এবং লিখতে একটি লাইব্রেরি সহ এক্সএমএল ব্যবহার করুন।

  2. আপনার অবশ্যই সিএসভি ব্যবহার করা উচিত। এটি সঠিকভাবে করুন এবং সিএসভি ফাইলগুলি বিশ্লেষণ এবং সঞ্চয় করার জন্য একটি ফ্রি লাইব্রেরি ব্যবহার করুন।

ন্যায়সঙ্গত 1), বেশিরভাগ সিএসভি পার্সার্স সচেতন এনকোডিং করছেন না তাই আপনি যদি ইউএস-এএসসিআইআইয়ের সাথে কাজ না করে থাকেন তবে আপনি সমস্যার জন্য জিজ্ঞাসা করছেন। উদাহরণস্বরূপ, এক্সেল 2002 এনকোডিং সম্পর্কে কোনও নোট ছাড়াই স্থানীয় এনকোডিংয়ে সিএসভি সঞ্চয় করছে। CSV স্ট্যান্ডার্ডটি ব্যাপকভাবে গৃহীত হয় না :( অন্যদিকে xML স্ট্যান্ডার্ডটি ভালভাবে গৃহীত হয়েছে এবং এটি এনকোডিংগুলি বেশ ভালভাবে পরিচালনা করে।

ন্যায্যতা প্রমাণ করতে 2), প্রায় সমস্ত ভাষার জন্য প্রচুর পরিমাণে সিএসভি পার্সার রয়েছে সুতরাং সমাধানগুলি বেশ সহজ দেখায় এমনকি চাকাটি পুনর্বহাল করার প্রয়োজন নেই।

কয়েকটি নাম রাখার জন্য:

সত্যই যদি আপনি এম্বেডড ডিভাইসে এটি বিশ্লেষণ করতে না যান তবে এটিকে হাতে হাতে প্রয়োগ করার দরকার নেই।


12
এক্সএমএল সবসময় উত্তর হয় না। CSV হ'ল কাজের জন্য সঠিক বিন্যাস যখন আপনার অনেক ঘন, ট্যাবুলার ডেটা থাকে (যেমন একটি স্প্রেডশিট)। এই ট্যাগগুলি প্রচুর ওভারহেডের পরিচয় দেয় এবং প্রতিটি লাইনের যদি একটির মতো বিন্যাস থাকে তবে প্রতিটি মান প্রতিটি কী উপস্থাপন করে সে সম্পর্কে স্পষ্ট করে বলার দরকার নেই। এক্সএমএল দুর্দান্ত হয় যখন আপনি জটিল শ্রেণিবদ্ধ তথ্য, বা fieldsচ্ছিক ক্ষেত্রগুলির সাথে রেকর্ড করেন। এটা সবসময় হয় না।
অ্যাডাম জ্যাসকিউইচ

তত্ত্বের মধ্যে "ট্যাগগুলি" কিছুটা ওভারহেডের পরিচয় দেয় তবে আমি এমন কোনও বাস্তব জীবনের প্রয়োগের কথা ভাবতে পারি না যেখানে এটি সমস্যা হতে শুরু করে। আপনার কোন ব্যবহারিক উদাহরণ আছে? ডেটা নিয়ে কাজ করার জন্য সিএসভির পরিবর্তে একটি ডাটাবেস ব্যবহার করা উচিত। যদি আমরা ডেটা সিরিয়ালাইজেশন (ব্যাকআপস, ডেটা ইন্টারচেঞ্জ) সম্পর্কে কথা বলি তবে 5 দিনের পরিবর্তে পার্সিংয়ে এক সপ্তাহ সময় লাগে কিনা তা বিবেচ্য হবে?
পাইওটার সিজাপলা

2
মূলত, কোনও পরিস্থিতি যাতে আপনার কাছে ডেটা থাকে যা সারণীর দ্বারা সর্বোত্তমভাবে উপস্থাপিত হয়। বলুন যে আপনার কাছে প্রায় এক ডজন বিভিন্ন সেন্সর থেকে ডেটা রয়েছে যা আপনি প্রায়শই নমুনা করেন এবং আপনি সেই সময়কার প্রতিটি সেন্সরের টাইমস্ট্যাম্প এবং মূল্য রেকর্ড করেন। প্রতিটি রেকর্ড অভিন্ন: টাইমস্ট্যাম্প, সেন্সর 0, সেন্সর 1, ... সেন্সর 11। এক্সএমএল জটিল, অনিয়মিত উপাত্ত উপস্থাপনের জন্য দুর্দান্ত তবে এটি একটি ভারী ওজনযুক্ত ফর্ম্যাট যা প্রতিটি একক পরিস্থিতির সাথে খাপ খায় না। KISS
অ্যাডাম জ্যাসকিউইজ

10
কিছু লোক সমস্যা দেখে এবং বলে "আমি জানি, আমি এক্সএমএল ব্যবহার করব!" এখন তারা দুটি সমস্যা আছে।
অ্যাডাম জ্যাসকিউইচ

আমি সম্পূর্ণরূপে একমত যে এক্সএমএল সবকিছুর উত্তর নয়। বিশেষত এটি ডাটাবেস প্রতিস্থাপন বা কনফিগারেশন ফাইলগুলির জন্য উপযুক্ত নয়। তবে এখানে প্রশ্নটি ডেটা এক্সচেঞ্জের জন্য ছিল যার জন্য এক্সএমএল ডিজাইন করা হয়েছিল।
পাইওটার সিজাপলা

0

আপনি এই জাতীয় সিএসভি ফাইলটি পড়তে পারেন।

এটি বিভাজন ব্যবহার করে এবং স্পেসগুলির যত্ন নেয়।

ArrayList List = new ArrayList();
static ServerSocket Server;
static Socket socket;
static ArrayList<Object> list = new ArrayList<Object>();


public static void ReadFromXcel() throws FileNotFoundException
{   
    File f = new File("Book.csv");
    Scanner in = new Scanner(f);
    int count  =0;
    String[] date;
    String[] name;
    String[] Temp = new String[10];
    String[] Temp2 = new String[10];
    String[] numbers;
    ArrayList<String[]> List = new ArrayList<String[]>();
    HashMap m = new HashMap();

         in.nextLine();
         date = in.nextLine().split(",");
         name = in.nextLine().split(",");
         numbers = in.nextLine().split(",");
         while(in.hasNext())
         {
             String[] one = in.nextLine().split(",");
             List.add(one);
         }
         int xount = 0;
         //Making sure the lines don't start with a blank
         for(int y = 0; y<= date.length-1; y++)
         {
             if(!date[y].equals(""))
             {   
                 Temp[xount] = date[y];
                 Temp2[xount] = name[y];
                 xount++;
             }
         }

         date = Temp;
         name =Temp2;
         int counter = 0;
         while(counter < List.size())
         {
             String[] list = List.get(counter);
             String sNo = list[0];
             String Surname = list[1];
             String Name = list[2];
             for(int x = 3; x < list.length; x++)
             {           
                 m.put(numbers[x], list[x]);
             }
            Object newOne = new newOne(sNo, Name, Surname, m, false);
             StudentList.add(s);
             System.out.println(s.sNo);
             counter++;
         }

0

প্রথমে আমাদেরকে জিজ্ঞাসা করা যাক, "কেন আমরা সিএসভি ফাইলগুলির জন্য কমাগুলি আলাদাভাবে পরিচালনা করার প্রয়োজন অনুভব করি?"

আমার জন্য উত্তরটি হ'ল, "যখন আমি কোনও সিএসভি ফাইলে ডেটা রফতানি করি তখন কোনও ক্ষেত্রের কমাগুলি অদৃশ্য হয়ে যায় এবং আমার ক্ষেত্রটি একাধিক ক্ষেত্রে বিভক্ত হয়ে যায় যেখানে আসল তথ্যগুলিতে কমাগুলি উপস্থিত হয়।" (এটি কারণ কমাটি সিএসভি ফিল্ড বিভাজক চরিত্র)

আপনার পরিস্থিতির উপর নির্ভর করে, আধা কলোনগুলি সিএসভি ফিল্ড বিভাজক হিসাবেও ব্যবহৃত হতে পারে।

আমার প্রয়োজনীয়তাগুলি বিবেচনা করে, আমি একটি অক্ষর ব্যবহার করতে পারি, উদাহরণস্বরূপ, একক কম -9 উদ্ধৃতি চিহ্ন, যা কমা হিসাবে দেখায়।

সুতরাং, আপনি এখানে কীভাবে এটি করতে পারেন তা এখানে:

// Replace special CSV characters with single low-9 quotation mark
func Scrub(a interface{}) string {
    s := fmt.Sprint(a)
    s = strings.Replace(s, ",", "‚", -1)
    s = strings.Replace(s, ";", "‚", -1)
    return s
}

প্রতিস্থাপন ফাংশনে দ্বিতীয় কমা দেখা চরিত্রটি দশমিক 8218।

সচেতন হন যে আপনার যদি ক্লায়েন্ট থাকে তবে কেবলমাত্র পাঠ্য পাঠক থাকতে পারে যে এই ডেসিমা 8218 অক্ষরটি কমা হিসাবে দেখাবে না। যদি এটি আপনার ক্ষেত্রে হয় তবে আমি আরএফসি 4128 প্রতি ডাবল উদ্ধৃতি সহ কমা (বা সেমিকোলন) দিয়ে ক্ষেত্রটিকে ঘিরে সুপারিশ করব: https://tools.ietf.org/html/rfc4180


0

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

(কমাগুলি% 2 সি হয়)

প্রতিটি ভাষার ইউআরএল-এনকোড এবং স্ট্রোড ডিকোড করার পদ্ধতি থাকা উচিত।

যেমন জাভাতে

URLEncoder.encode(myString,"UTF-8"); //to encode
URLDecoder.decode(myEncodedstring, "UTF-8"); //to decode

আমি জানি এটি একটি খুব সাধারণ সমাধান এবং এটি পরিস্থিতিটির জন্য আদর্শ নাও হতে পারে যেখানে ব্যবহারকারী সিএসভি ফাইলের সামগ্রী ম্যানুয়ালি দেখতে চান।


0

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

// The below two lines will split the columns as well as trim the DBOULE QUOTES around values but NOT within them
    string trimmedLine = line.Trim(new char[] { '\"' });
    List<string> values = trimmedLine.Split(new string[] { "\",\"" }, StringSplitOptions.None).ToList();

1
আমার কোড কেন স্ট্যাকওভারফ্লোতে একাধিক রঙে প্রদর্শিত হয় না? আমি চারটি স্পেস দ্বারা ইন্ডেন্ট করি।
user1451111


0

সবচেয়ে সহজ সমাধান আমি খুঁজে পেয়েছি হ'ল লিব্রেফিস যা ব্যবহার করে:

  1. সমস্ত আক্ষরিক "দ্বারা প্রতিস্থাপন
  2. আপনার স্ট্রিংয়ের চারপাশে ডাবল কোট রাখুন

আপনি এক্সেল ব্যবহার করেন এমনটি ব্যবহার করতে পারেন:

  1. সমস্ত আক্ষরিক "দ্বারা প্রতিস্থাপন""
  2. আপনার স্ট্রিংয়ের চারপাশে ডাবল কোট রাখুন

অন্যান্য লোকেরা উপরোক্ত পদক্ষেপটি কেবল দ্বিতীয় পদক্ষেপের জন্য প্রস্তাবিত হয়েছে তা লক্ষ্য করুন, কিন্তু সিএসভিতে যেমন স্ট্রিং সহ একটি একক কলাম রাখতে চান এমন কোনও সিএসভি "যেমন আপনার অনুসরণ করবে এমন রেখাগুলির সাথে কাজ করে না :,hello",world

"hello",world"

যা দুটি কলাম সহ একটি সারি হিসাবে ব্যাখ্যা করা হয়: helloএবংworld"


1
স্ট্যান্ডার্ড নিয়ম অনুসারে, বিভক্ত অক্ষর বা উদ্ধৃতি সমেত যে কোনও ক্ষেত্রের চারপাশে উদ্ধৃতি, এবং এর ভিতরে যে কোনও উদ্ধৃতি দ্বিগুণ করা হয়েছে, তাই কোনও সমস্যা নেই। আপনার hello",worldক্ষেত্রটি কেবল সংরক্ষণ করা দরকার "hello"",world", যা সঠিকভাবে 100% পার্স করা যায়।
নাইরেগডস

0
    public static IEnumerable<string> LineSplitter(this string line, char 
         separator, char skip = '"')
    {
        var fieldStart = 0;
        for (var i = 0; i < line.Length; i++)
        {
            if (line[i] == separator)
            {
                yield return line.Substring(fieldStart, i - fieldStart);
                fieldStart = i + 1;
            }
            else if (i == line.Length - 1)
            {
                yield return line.Substring(fieldStart, i - fieldStart + 1);
                fieldStart = i + 1;
            }

            if (line[i] == '"')
                for (i++; i < line.Length && line[i] != skip; i++) { }
        }

        if (line[line.Length - 1] == separator)
        {
            yield return string.Empty;
        }
    }

0

আমি সিএসগ্র্যাডার লাইব্রেরি ব্যবহার করেছি তবে এটি ব্যবহার করে কলাম মানটিতে কমা (,) থেকে বিস্ফোরিত হয়ে ডেটা পেয়েছি।

সুতরাং আপনি যদি বেশিরভাগ কলামের মানগুলিতে কমা (,) থাকা সিএসভি ফাইল ডেটা inোকাতে চান তবে আপনি নীচের ফাংশনটি ব্যবহার করতে পারেন। লেখকের লিঙ্ক => https://gist.github.com/jaywilliams/385876

function csv_to_array($filename='', $delimiter=',')
{
    if(!file_exists($filename) || !is_readable($filename))
        return FALSE;

    $header = NULL;
    $data = array();
    if (($handle = fopen($filename, 'r')) !== FALSE)
    {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
        {
            if(!$header)
                $header = $row;
            else
                $data[] = array_combine($header, $row);
        }
        fclose($handle);
    }
    return $data;
}

0

আমি সিএসভি ফাইল বিশ্লেষণ করতে এবং কী-মান জোড়া (কী / শিরোনাম / সিএসভি ফাইল-মানের প্রথম সারিতে) রাখতে প্যাপাপার্স লাইব্রেরিটি ব্যবহার করেছি।

এখানে আমি উদাহরণ ব্যবহার করি:

https://codesandbox.io/embed/llqmrp96pm

এতে সিএসভি পার্সিং ডেমো রাখতে সেখানে dummy.csv ফাইল রয়েছে।

আমি এটিকে রিএ্যাকটিজেএসের মধ্যে ব্যবহার করেছি যদিও কোনও ভাষার সাথে লিখিত অ্যাপে প্রতিলিপি করা সহজ এবং সহজ।


0

একটি উদাহরণ .csv ফাইলে কমাগুলি প্রদর্শিত হতে পারে তা দেখাতে সহায়তা করতে পারে। নিম্নরূপ একটি সাধারণ পাঠ্য ফাইল তৈরি করুন:

এই পাঠ্য ফাইলটি প্রত্যয় ".csv" সহ একটি পাঠ্য ফাইল হিসাবে সংরক্ষণ করুন এবং উইন্ডোজ 10 থেকে এক্সেল 2000 দিয়ে এটি খুলুন।

এএ, বিবি, সিসি, ডি; ডি "স্প্রেডশিট উপস্থাপনায় নীচের লাইনটি উপরের লাইনের মতো দেখতে হবে ব্যতীত ডি এর মধ্যে একটি সেমিকোলনের পরিবর্তে প্রদর্শিত কমা দেখায়।" এএ, বিবি, সিসি, "ডি, ডি", এটি এমনকি এক্সেলেও কাজ করে

এএ, বিবি, সিসি, "ডি, ডি", এটি এক্সেল 2000 এএ, বিবি, সিসি, "ডি, ডি" তেও কাজ করে, এটি এমনকি এক্সেল 2000 এএ, বিবি, সিসি, "ডি, ডি", এই কাজ করে এমনকি এক্সেল 2000 এও

এএ, বিবি, সিসি, "ডি, ডি", স্পেস বেলোর এএল, বিবি, সিসি, "ডি, ডি" এর কারণে এটি এক্সেল ২০০০ এ ব্যর্থ হয়েছে, স্থান এক্সটোরের কারণে এটি এক্সেল ২০০০ এ ব্যর্থ হয়েছে ১ ম উদ্ধৃতিটি এএ, বিবি, সিসি, "ডি, ডি", স্থানটি প্রথম স্তরের কারণে এটি এক্সেল ২০০০ এ ব্যর্থ হয়েছে

এএ, বিবি, সিসি, "ডি, ডি", এটি ২ য় উদ্ধৃতির আগে এবং পরে স্পেস সহ এমনকি এক্সেল 2000 এও কাজ করে। এএ, বিবি, সিসি, "ডি, ডি", এটি ২ য় উদ্ধৃতির আগে এবং পরে স্পেস সহ এমনকি এক্সেল 2000 এও কাজ করে। এএ, বিবি, সিসি, "ডি, ডি", এটি ২ য় উদ্ধৃতির আগে এবং পরে স্পেস সহ এমনকি এক্সেল 2000 এও কাজ করে।

বিধি: আপনি যদি একটি .csv ফাইলের এএ সেল (ক্ষেত্র) এ কমা প্রদর্শন করতে চান: "ডাবল উদ্ধৃতি দিয়ে ক্ষেত্রটি শুরু করুন এবং শেষ করুন, তবে 1 ম উক্তিটির আগে সাদা স্থান এড়াতে"


-1

আমি মনে করি এই সমস্যার সহজতম সমাধান হ'ল গ্রাহককে এক্সেলের মাধ্যমে সিএসভি খুলতে হবে, এবং তারপরে সিটিআরএল + আর আপনি যা চান তা সনাক্তকারী সহ সমস্ত কমা প্রতিস্থাপন করতে পারেন। এটি গ্রাহকের পক্ষে খুব সহজ এবং আপনার পছন্দের ডিলিমেটারটি পড়তে আপনার কোডে কেবল একটি পরিবর্তন প্রয়োজন।


কে বলছে তাদের এক্সেল আছে? আসলে কে বলেছে এমনকি এমন একজন মানুষ যা আপলোড করছে? ...
বাইটেডেভ

-3

ক্ষেত্রগুলি পৃথক করতে একটি ট্যাব অক্ষর (\ t) ব্যবহার করুন।


4
-1 দুর্দান্ত কেউ অবধি তার মান একটি ট্যাব ব্যবহার না করে আপনার প্রশ্নটি জিজ্ঞাসা করা ব্যক্তিটির যে সমস্যাটি এসেছে তার ডানদিকে ফিরে আসুন। অন্যটির জন্য একটি ডিলিমিটার চর অদলবদল সমস্যা সমাধান করতে চাইছে না।
বাইটেডেভ

ছাইপাঁশ. লোকেরা তাদের ডেটা ইনপুটটিতে ট্যাব প্রবেশ করতে পারে না। বেশিরভাগ ফর্মে, এটি কেবলমাত্র ডাটা এন্ট্রি পয়েন্টটিকে পরবর্তী ক্ষেত্রে সরিয়ে দেয়।
পিয়েরে

6
"লোকেরা তাদের ডেটা ইনপুটটিতে ট্যাব প্রবেশ করতে পারে না" .... আপনি কি গুরুতর ?? ক) অবশ্যই কোনও ব্যক্তি একটি ইনপুট ক্ষেত্রে একটি ট্যাব লাগাতে পারে খ) কে বলে যে এটি জিইউআই যা তথ্য থেকে আসে? গ) ডেটাতে প্রবেশকারী এটি এমন কি একটি মানব কে বলে?
বাইটেডেভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.