csv worksheets स्वरूपण तोड़ने के बिना सीएसवी कॉलम में अल्पविराम शामिल करने का कोई तरीका है?




विराम चिह्न अभ्यास (8)

मेरे पास एक नाम और संख्या के साथ दो कॉलम सीएसवी है। कुछ लोगों का नाम अल्पविराम का उपयोग करता है, उदाहरण के लिए Joe Blow, CFA. यह कॉमा सीएसवी प्रारूप को तोड़ता है, क्योंकि इसे एक नए कॉलम के रूप में व्याख्या किया जाता है।

मैंने पढ़ा है और सबसे आम नुस्खे उस चरित्र को प्रतिस्थापित कर रहा है, या एक नए मूल्य के साथ डेलीमीटर को प्रतिस्थापित कर रहा है (उदाहरण के लिए this|that|the, other )।

मैं वास्तव में अल्पविराम विभाजक रखना चाहता हूं (मुझे पता है कि एक्सेल अन्य delimiters का समर्थन करता है लेकिन अन्य दुभाषिया नहीं हो सकता है)। मैं Joe Blow| CFA के नाम पर कॉमा को भी नाम में रखना चाहूंगा Joe Blow| CFA बहुत मूर्खतापूर्ण दिखता है।

प्रारूपण तोड़ने के बिना सीएसवी कॉलम में अल्पविराम शामिल करने का कोई तरीका है, उदाहरण के लिए उनसे बचकर?


अन्य उत्तरों में बिंदुओं के अतिरिक्त: एक बात यह ध्यान में रखना है कि क्या आप Excel में उद्धरण का उपयोग कर रहे हैं, यह आपकी रिक्त स्थान की नियुक्ति है। यदि आपके पास इस तरह की कोड की एक पंक्ति है:

print '%s, "%s", "%s", "%s"' % (value_1, value_2, value_3, value_4)

एक्सेल प्रारंभिक उद्धरण को अल्पविराम से बचने के लिए इसका उपयोग करने के बजाय एक शाब्दिक उद्धरण के रूप में पेश करेगा। आपके कोड को बदलने की आवश्यकता होगी

print '%s,"%s","%s","%s"' % (value_1, value_2, value_3, value_4)

यह इस सूक्ष्मता थी जो मुझे यहाँ लाया।


सबसे पहले, यदि आइटम मान में डबल कोट वर्ण (") है, तो 2 डबल कोट वर्ण (" ") के साथ प्रतिस्थापित करें

item = item.ToString().Replace("""", """""")

अंत में, आइटम मूल्य लपेटें:

बाईं ओर: डबल कोट वर्ण (") के साथ

दाएं: डबल कोट वर्ण (") और अल्पविराम चरित्र (,) के साथ

csv += """" & item.ToString() & ""","

आपकी भाषा के आधार पर, एक to_json विधि उपलब्ध हो सकती है। यह सीएसवी को तोड़ने वाली कई चीजों से बच जाएगा।


मुझे एक ही समस्या का सामना करना पड़ा और उद्धरण देना , मदद नहीं की। आखिरकार, मैंने बदल दिया , + साथ, प्रसंस्करण समाप्त किया, आउटपुट को आउटफाइल में सहेजा और + साथ बदल दिया। यह बदसूरत लग सकता है लेकिन यह मेरे लिए काम किया।


उद्धरण में फ़ील्ड संलग्न करें, उदाहरण के लिए

field1_value,field2_value,"field 3,value",field4, etc...

wikipedia देखें।

अपडेट किया गया :

उद्धरण को एन्कोड करने के लिए, " एक फ़ील्ड में एक सिंगल कोट प्रतीक को एन्कोड किया जाएगा "" , और पूरा फ़ील्ड """" हो जाएगा। """" यदि आप निम्न में उदाहरण देखते हैं जैसे Excel:

---------------------------------------
| regular_value |,,,"|  ,"", |"""   |"|
---------------------------------------

सीएसवी फ़ाइल में निम्न शामिल होंगे:

regular_value,",,,""",","""",","""""""",""""

एक अल्पविराम उद्धरणों का उपयोग करके बस encapsulated है, तो , "," बन जाता है।

एक अल्पविराम और उद्धरण को encapsulated और उद्धृत करने की जरूरत है, तो "," बन जाता है ""","""


सीएसवी प्रारूप के साथ समस्या, एक कल्पना नहीं है, कई स्वीकार्य विधियां हैं, जिनमें कोई अंतर नहीं है जिसका प्रयोग किया जाना चाहिए (उत्पन्न / व्याख्या के लिए)। मैंने एक और पोस्ट में पात्रों से बचने के लिए सभी विधियों पर चर्चा की (उस मामले में नई पंक्तियां, लेकिन समान आधारभूत आधार)। असल में यह लक्षित उपयोगकर्ताओं के लिए एक सीएसवी पीढ़ी / भागने की प्रक्रिया का उपयोग करने के लिए नीचे आता है, और उम्मीद है कि बाकी को कोई फर्क नहीं पड़ता।

संदर्भ spec दस्तावेज़


आपको उन मानों को उद्धृत करने की आवश्यकता है।
Here एक और विस्तृत कल्पना है।


यदि आप इसे बनाना चाहते हैं, तो आप उद्धरणों का उपयोग कर सकते हैं। कुछ इस तरह

$name = "Joe Blow, CFA.";
$arr[] = "\"".$name."\"";

तो अब, आप अपने नाम चर में अल्पविराम का उपयोग कर सकते हैं।





csv