সিএসভিতে সঠিকভাবে একটি ডাবল উদ্ধৃতি এড়ান


164

আমার সিএসভিতে আমার এর মতো লাইন রয়েছে:

"Samsung U600 24"","10000003409","1","10000003427"

পরবর্তী 24উদ্ধৃতি ইঞ্চি প্রকাশ করতে ব্যবহৃত হয়, যখন সেই উদ্ধৃতিটির ঠিক পাশের উদ্ধৃতিটি ক্ষেত্রটি বন্ধ করে দেয়। আমি এর সাথে লাইনটি পড়ছি fgetcsvতবে পার্সার একটি ভুল করে এবং মূল্যটি এইভাবে পড়ে:

Samsung U600 24",10000003409"

আমি ইঞ্চি কোটের আগে একটি ব্যাকস্ল্যাশ দেওয়ার চেষ্টা করেছি, তবে তারপরে আমি কেবল নামে একটি ব্যাকস্ল্যাশ পেয়েছি:

Samsung U600 24\"

সিএসভিতে এটি থেকে যথাযথভাবে পালানোর কোনও উপায় আছে, যাতে মানটি হয় Samsung U600 24", বা প্রসেসরে এটি আমাকে পুনরায় বজায় রাখতে হয়?


21
আপনার উদ্ধৃতিটি দ্বিগুণ করুন।
আপনার সাধারণ অনুভূতি

উত্তর:


281

2 টি উদ্ধৃতি ব্যবহার করুন:

"Samsung U600 24"""

102
আরএফসি -১৪০০, অনুচ্ছেদ "যদি ক্ষেত্রগুলি আবদ্ধ করতে ডাবল-কোট ব্যবহার করা হয়, তবে ক্ষেত্রের অভ্যন্তরে একটি দ্বিগুণ উদ্ধৃতি অবশ্যই অন্য একটি দ্বিগুণ উদ্ধৃতি দিয়ে তার আগে পালাতে হবে।"
16:30 এ টমড

4
যেমন ছদ্মবেশে বলা হয়েছে আপনাকে ডাবল উদ্ধৃতি থেকে বাঁচতে কেবল একটি একক ডাবল উদ্ধৃতি যুক্ত করতে হবে। আপনি যে কোনও লাইন মেনে চলছেন না তা সনাক্ত করতে csvfix নামক একটি কমান্ড-লাইন সরঞ্জাম ব্যবহার করতে পারেন: csvfix চেক -nl -v [ফাইলের নাম]
স্যাম ক্র্যাচলে

2
@ স্যামক্রিটলি আমি কেবলমাত্র এখানেই পালাতে একটি মাত্র ডাবল উদ্ধৃতি ব্যবহার করতে দেখছি। "2 টি উদ্ধৃতি ব্যবহার করুন" এর মাধ্যমে, ব্যবহারকারী 4035 এর অর্থ হল 1 টি উদ্ধৃতি 2 টি উদ্ধৃতি দিয়ে প্রতিস্থাপন করা উচিত। ডাবল উদ্ধৃতি সহ ডাবল উদ্ধৃতি থেকে পালিয়ে, আপনি কার্যকরভাবে জোড়া ডাবল উদ্ধৃতি (2 ডাবল কোট) তৈরি করছেন। আপনি শেষে চূড়ান্ত উক্তিটি ক্ষেত্রটি সমাপ্ত করা।
Zenexer

1
একক ডাবল ডাবল একক ডাবল উদ্ধৃতি প্রয়োজন, তবে কেবলমাত্র ডাবল একক ডাবল উদ্ধৃতি দ্বারা এগিয়ে গেলে ... শুভেচ্ছা!
ড্যানিয়েল ওয়াল্ট্রিপ

14

কেবলমাত্র ডাবল উদ্ধৃতি নয়, আপনার একক উদ্ধৃতি ( '), ডাবল উদ্ধৃতি ( "), ব্যাকস্ল্যাশ ( \) এবং NUL (NULL বাইট) প্রয়োজন হবে।

fputcsv()লিখতে এবং fgetcsv()পড়তে ব্যবহার করুন , যা সকলের যত্ন নেবে।


3
এই মন্তব্যটি উপর ডকুমেন্টেশন পৃষ্ঠাfputcsv() তুমি কেমন ব্যবহার করতে পারে শো fputcsv()যখন আপনি পরিবর্তে ব্রাউজার একটি প্রকৃত ফাইলে CSV বিন্যাসে আউটপুট করতে চাই।
dennisschagt

15
@ অ্যাঙ্গেলিন নাদের, আপনি কি দয়া করে একক উদ্ধৃতি, ব্যাকস্ল্যাশ এবং এনএলএল দ্বিগুণ করার প্রয়োজনীয়তা সম্পর্কে আপনার দাবির কোনও উত্স যোগ করতে পারেন? আমি এটি আরএফসি -১৪৮০ তে পাইনি ।
পেট্র 'পেপা' পাভেল

2
আপনাকে আসলে একক উদ্ধৃতি ইত্যাদি পালাতে হবে না একটি যথাযথ সিএসভি ফাইল এমনকি একটি ক্ষেত্রের চারপাশে ডাবল উদ্ধৃতি যুক্ত করার প্রয়োজন নেই যার মধ্যে কেবল একক উদ্ধৃতি রয়েছে। যদি সিএসভি রিডারটি যথাযথভাবে প্রয়োগ করা হয় তবে ফাইলগুলি সেই চিহ্নগুলির সাথেও সঠিকভাবে পড়া উচিত।
xji

4
কেন এই উত্তরটি ভোট দিয়েছিল? পালানোর অক্ষর সম্পর্কে মন্তব্যটির ব্যাক আপ নেওয়া হয়নি এবং আসল প্রশ্নটি পিএইচপি সম্পর্কে জিজ্ঞাসা করে না। এটি কেবল স্ট্রিং ডিলিমিটারের জন্যই সত্য বলে মনে হয় (এবং কেবলমাত্র নির্বাচিত ডিলিমিটারের জন্য) যখন কোনও প্রোগ্রাম যেমন ওপেন অফিস আপনাকে এটি পরিবর্তন করতে দেয়।
ডেভ এফ

0

আমি জানি এটি একটি পুরানো পোস্ট, তবে আমি একটি এক্সটেনশন পদ্ধতি ব্যবহার করে সি # তে এটি কীভাবে সমাধান করেছি (নাল মানকে খালি স্ট্রিংয়ে রূপান্তরিত করার পাশাপাশি)।

নীচের মতো কিছু নিয়ে একটি স্ট্যাটিক ক্লাস তৈরি করুন:

    /// <summary>
    /// Wraps value in quotes if necessary and converts nulls to empty string
    /// </summary>
    /// <param name="value"></param>
    /// <returns>String ready for use in CSV output</returns>
    public static string Q(this string value)
    {
        if (value == null)
        {
            return string.Empty;
        }
        if (value.Contains(",") || (value.Contains("\"") || value.Contains("'") || value.Contains("\\"))
        {
            return "\"" + value + "\"";
        }
        return value;
    }

তারপরে প্রতিটি স্ট্রিংয়ের জন্য আপনি সিএসভিতে লিখছেন, পরিবর্তে:

stringBuilder.Append( WhateverVariable );

আপনি কেবল:

stringBuilder.Append( WhateverVariable.Q() );

-1

যদি কোনও মানটিতে কমা, একটি নতুন লাইন অক্ষর বা একটি ডাবল উদ্ধৃতি থাকে তবে স্ট্রিংটি অবশ্যই ডাবল উদ্ধৃতিতে আবদ্ধ থাকতে হবে। উদাহরণস্বরূপ: "এই ক্ষেত্রে নিউলাইন চর \ n"।

"" এবং, অপারেটরদের পালাতে আপনি নীচের অনলাইন সরঞ্জাম ব্যবহার করতে পারেন। https://www.freeformatter.com/csv-escape.html#ad-output

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