कॉमा या अर्धविराम के साथ CSV?


80

CSV फ़ाइल को सामान्य रूप से कैसे बनाया जाता है? अल्पविराम या अर्धविराम के साथ? किसी भी सलाह जिस पर उपयोग करने के लिए?


5
देखें अल्पविराम विभाजित मान (विकिपीडिया)।
जेसपर

4
CSV -> कोमा
सेपरेटेड

@ सीएचडीएनसी ने मेरे कोड का उपयोग करने वाले सीमांकक का चयन करते समय मैंने इसके बारे में भी सोचा। सबसे आसान समाधान का उपयोग करना था ;, जो कि किसी विशिष्ट सेटिंग (एस) को निर्धारित करने के बिना, उबंटू और विंडोज दोनों में स्वचालित रूप से मान्यता प्राप्त है।
gsamaras

जवाबों:


77

विंडोज में यह "रीजनल एंड लैंग्वेज ऑप्शंस" पर आधारित स्क्रीन पर निर्भर करता है, जहां आपको लिस्ट सेपरेटर मिलता है। यह चार विंडोज़ अनुप्रयोग है जो सीएसवी विभाजक होने की उम्मीद करते हैं।

बेशक यह केवल विंडोज अनुप्रयोगों में प्रभाव पड़ता है, उदाहरण के लिए यदि फ़ाइल उपर्युक्त विभाजक का उपयोग नहीं कर रहा है तो एक्सेल स्वचालित रूप से कॉलम में डेटा को विभाजित नहीं करेगा। विंडोज क्षेत्रीय सेटिंग्स का उपयोग करने वाले सभी अनुप्रयोगों में यह व्यवहार होगा।

यदि आप विंडोज के लिए एक प्रोग्राम लिख रहे हैं जिसमें अन्य अनुप्रयोगों में सीएसवी आयात करने की आवश्यकता होगी और आप जानते हैं कि आपके लक्षित मशीनों के लिए सूची विभाजक सेट है ,, तो इसके लिए जाएं, अन्यथा मैं पसंद करता हूं ;क्योंकि यह दशमलव बिंदुओं के साथ कम समस्याएं पैदा करता है, अंक समूहीकरण। और ज्यादा पाठ में दिखाई नहीं देता है।


35
यह परिवर्तन एक्सेल में CSV फ़ाइलों को खोलने को भी प्रभावित करेगा। यदि आप विंडोज़ CSV फ़ाइल के लिए अधिक संगत बनाना चाहते हैं, sep=;तो CSV फ़ाइल के ऊपर रखें।
पापो

11
> "मैं पसंद करता हूं, क्योंकि यह दशमलव बिंदुओं के साथ कम समस्याओं का कारण बनता है"। यह गलत समाधान है। यदि आपका विभाजक अल्पविराम है और सेल के मान में अल्पविराम भी है, तो आपको मान को दोहरे उद्धरण चिह्नों में शामिल करना होगा। उदाहरण के लिए: 111,222, "33,5", 444, "55,98", 666
एल्म्यू

1
यह मैक नंबर ऐप के लिए भी मामला है। मैं अपने बालों को बाहर निकाल रहा था क्योंकि मैं एक सीएसवी नहीं बना सका जिसे फोटोशॉप ने पहचाना। मैंने यूएस इंग्लिश में रीजन ऑप्शन बदल दिया और यह सब फिर से ठीक हो गया
टिबिडाबो

21
वह क्षेत्रीय चीज सबसे बेवकूफ चीज है जिसे वह कभी भी बना सकता है। सीएसवी का प्रारूप पूरे क्षेत्रों में भिन्न हो सकता है, इसका मतलब यह है कि मेरे सहयोगी किसी अन्य क्षेत्र में पीसी वाले लोगों के लिए सीएसवी नहीं खोल सकते हैं या सहेज नहीं सकते हैं .. oucch
Miguel

यदि आप विंडोज़ में Cया C++विंडोज के नीचे प्रोग्रामिंग कर रहे हैं, तो आप सिस्टम-वाइड, या उपयोगकर्ता सीमांकक को पुनः प्राप्त करने के लिए निम्नलिखित एपीआई का उपयोग कर सकते हैं:GetLocaleInfo(lcid, LOCALE_SLIST, buff, _countof(buff));
ahmd0

52

मैं कहता हूं कि यह अल्पविराम के रूप में पहचाना और समझा जाता है। अपने मूल्यों को उद्धृत करना और अपने उद्धरणों से बचना सुनिश्चित करें।

ID,NAME,AGE
"23434","Norris, Chuck","24"
"34343","Bond, James ""master""","57"

5
बहुत कम उदाहरण के साथ बहुत सारे सीएसवी परिदृश्यों को कवर करने के लिए +1
नील्स ब्रिंच

1
कोमा को अपने आप से अलग करना अच्छा है, लेकिन आपको उन क्षेत्रों में समस्या आती है जब आपके पास उन क्षेत्रों में कॉमा होते हैं। यहाँ एक अच्छा संदर्भ मुझे मैनुअल पर
Ibu

4
गलत! मेरी मशीन में अगर मैं एक CSV फ़ाइल को कॉमा का उपयोग करके विभाजक के रूप में लिखता हूं और इसे एक्सेल में खोलता हूं, तो मुझे पूरी लाइन केवल एक कॉलम पर कब्जा करने के लिए मिलती है! यह कुछ विंडोज क्षेत्रीय सेटिंग होना चाहिए!
सर्गिओल

2
@sergiol मुझे यकीन नहीं है कि जो उन्होंने कहा था उसे कैसे अमान्य करता है।
एएमसी

51

CSV एक मानक प्रारूप है, जिसे RFC 4180 (2005 में) में उल्लिखित किया गया है, इसलिए इसमें मानक की कोई कमी नहीं है। https://www.ietf.org/rfc/rfc4180.txt

और इससे पहले भी, CSV में C हमेशा कॉमा के लिए खड़ा था, सेमीकॉलन के लिए नहीं :(

यह अफ़सोस की बात है कि Microsoft इस बात को नज़रअंदाज़ करता रहता है और अभी भी उस राक्षसी से चिपके रहता है जिसे उन्होंने दशकों पहले बदल दिया था (हाँ, मैं मानता हूँ, जो RFC बनने से पहले था)।

  • प्रति पंक्ति एक रिकॉर्ड, जब तक उद्धृत पाठ के भीतर एक नई पंक्ति नहीं होती है (नीचे देखें)।
  • कॉलम विभाजक के रूप में COMMA। अर्धविराम कभी नहीं।
  • दशमलव संख्या के रूप में पेरियोड। कभी अल्पविराम नहीं।
  • पाठ जिसमें अल्पविराम, अवधि और / या "दोहरे उद्धरण चिह्नों" में संलग्न नई कड़ियाँ हैं।
  • केवल यदि पाठ दोहरे उद्धरण चिह्नों में संलग्न है, तो पाठ में ऐसे उद्धरण चिह्न दोहरीकरण से बच जाते हैं। ये उदाहरण समान तीन क्षेत्रों का प्रतिनिधित्व करते हैं:

    1, "इस पाठ में" "उद्धरण चिह्न" "" है, 3

    1, इस पाठ में "उद्धरण चिह्न" हैं, 3

मानक दिनांक और समय मानों को कवर नहीं करता है, व्यक्तिगत रूप से मैं दिन / महीने / वर्ष - माह / दिन / वर्ष भ्रम से बचने के लिए आईएसओ 8601 प्रारूप से चिपके रहने की कोशिश करता हूं।


16
यदि अर्धविराम को पहले स्थान पर चुना गया होता तो राक्षसी कभी प्रकट नहीं होती। अल्पविराम का उपयोग केवल दशमलव या हजारों विभाजक के लिए नहीं किया जाता है, बल्कि पाठ में भी अक्सर अर्धविराम के विपरीत होता है। अर्धविराम एक बेहतर विकल्प होता क्योंकि यह बहुत अधिक दुर्लभ होता है ...
AF

14
जब मैंने राक्षसी कहा, तो मेरा मतलब था कि Microsoft ने इसे भाषा पर निर्भर बना दिया। एक्सेल CSV फाइलें खोलता है और उन्हें स्प्रेडशीट के रूप में मानता है, और CSV प्रारूप में स्प्रेडशीट बचा सकता है, लेकिन यूएस में एक्सेल द्वारा सहेजी गई CSV फ़ाइल (उदाहरण के लिए) फ्रांस या बेल्जियम में कोई व्यक्ति इसे खोलने की कोशिश नहीं करेगा, और इसके विपरीत। जो भी मानक मेरे लिए ठीक है, जब तक कि एक मानक है जो हर किसी के लिए काम करता है।
ल्यूक VdV

4
"सीएसवी एक मानक प्रारूप है, जिसे आरएफसी 4180 (2005 में) में उल्लिखित किया गया है, इसलिए इसमें मानक की कोई कमी नहीं है।" दुर्भाग्य से, RFC 4180 टिप्पणियों के लिए एक अनुरोध है, एक मानक नहीं है। यह शीर्ष पर सही कहता है - "किसी भी प्रकार का इंटरनेट मानक निर्दिष्ट नहीं करता है।" बाद में, यह कहता है कि RFC 4180 "उस प्रारूप का दस्तावेजीकरण करता है जो सबसे अधिक कार्यान्वयन के बाद लगता है।" ऐसा प्रतीत होता है कि यह एक छोटी निजी कंपनी द्वारा बनाया गया था, जो किसी भी मानक निकाय से जुड़ा नहीं था। यह एक उत्कृष्ट शुरुआती बिंदु है, लेकिन दुर्भाग्य से वहाँ जंगली में बहुत सीवीवी फाइलें हैं जो इस "मानक" का पालन नहीं करती हैं।
जिम री

9
सभी इंटरनेट मानकों को RFC कहा जाता है।
ल्यूक VdV

2
लेकिन जब वे मानक होते हैं, तो वे यह नहीं कहते हैं कि वे मानक नहीं हैं। इसके बजाय, उनके पास कई आदर्श खंड हैं, जो कि RFC 4180 का मामला नहीं है।
Frédéric

42

इसके अलावा प्रासंगिक है, लेकिन विशेष रूप से उत्कृष्टता के लिए, इस उत्तर को देखें और यह एक अन्य जो सुझाव देता है, CSV की शुरुआत में एक पंक्ति सम्मिलित करना

"sep=,"

एक्सेल को सूचित करने के लिए जो विभाजक की अपेक्षा करता है


3
यह एक्सेल के साथ काम करता है, लेकिन इसे Microsoft Power BI द्वारा मान्यता प्राप्त नहीं है।
टॉमस क्यूब्स

9

1. .सीएसएसवी (अर्धविराम सीमांकित) के लिए फ़ाइल प्रारूप बदलें

वांछित परिणाम प्राप्त करने के लिए हमें विकल्प delimiterमें सेटिंग को अस्थायी रूप से बदलना होगा Excel:

Move to File -> Options -> Advanced -> Editing Section

"सिस्टम विभाजक का उपयोग करें" सेटिंग को अनचेक करें और "दशमलव विभाजक" फ़ील्ड में अल्पविराम लगाएं।

अब फाइल को .CSVफॉर्मेट में सेव करें और इसे सेमीकोलन सीमांकित फॉर्मेट में सेव किया जाएगा।


6

प्रारंभ में यह एक अल्पविराम होना था, हालांकि अल्पविराम का उपयोग अक्सर दशमलव बिंदु के रूप में किया जाता है यह इतना अच्छा विभाजक नहीं होगा, इसलिए अर्धविराम जैसे अन्य, ज्यादातर देश निर्भर

http://en.wikipedia.org/wiki/Comma-separated_values#Lack_of_a_standard


विकिपीडिया लेख का वह भाग गायब हो गया। आप en.wikipedia.org/wiki/Comma-separated_values#Basic_rules पर पुनः लिंक करना चाह सकते हैं , इसमें स्थानों पर एक मार्ग है:> " आस-पास के क्षेत्रों को एक ही अल्पविराम द्वारा अलग किया जाना चाहिए। हालांकि," CSV "प्रारूप बहुत भिन्न हो सकते हैं। विभाजक चरित्र की यह पसंद। विशेष रूप से, ऐसे स्थानों में जहाँ अल्पविराम का उपयोग दशमलव विभाजक, अर्धविराम, TAB या अन्य वर्णों के रूप में किया जाता है। "
जूल्स कर्समेकर्स

4

CSV एक कोमा सेपरेटेड फाइल है। आम तौर पर सीमांकक एक अल्पविराम है, लेकिन मैंने कई अन्य पात्रों को परिसीमाक के रूप में इस्तेमाल करते देखा है। वे बस के रूप में अक्सर इस्तेमाल नहीं कर रहे हैं।

आपको क्या उपयोग करना है, इसकी सलाह देने के लिए, हमें आपका आवेदन जानना होगा। क्या फ़ाइल आपके एप्लिकेशन / प्रोग्राम के लिए विशिष्ट है, या क्या इसे अन्य कार्यक्रमों के साथ काम करने की आवश्यकता है?


6
मुझे लगता है कि यूरोप में; प्रचलित है। ज्यादातर इसलिए कि हमारे पास 60,00 € जैसी संख्या में अल्पविराम हैं।
oers

5
@ जब तक आप "quote"अपने मूल्यों के रूप में यह बात नहीं होनी चाहिए ।
अदर्सहर

ठीक है, मैंने ज्यादातर अन्य सीमांकक को सीडफाइल्स नेटवर्किंग में इस्तेमाल किया, लेकिन यूरोपीय पैसे भी काम करते हैं!
यूसुफ जी।

4

CSV के लिए डिफ़ॉल्ट एक्सेल विभाजक के रूप में अर्धविराम में अल्पविराम बदलने के लिए - क्षेत्र पर जाएं -> अतिरिक्त सेटिंग्स -> संख्या टैब -> सूची विभाजक और प्रकार; डिफ़ॉल्ट के बजाय,


1
यदि आपकी क्षेत्रीय सेटिंग्स ,दशमलव विभाजक के रूप में सेट की जाती हैं और ,जब आप इसे खोलते हैं तो आप स्तंभों से अलग एक फ़ाइल निर्यात करते हैं। एक्सेल में, पाठ केवल एक कॉलम में दिखाई देगा। चुनें> - एक्सेल 2013 में, पहले स्तंभ का चयन करें, डेटा के लिए जाने -> पाठ कॉलम करने के लिए Delimited, क्लिक करें Nextउसके बाद ही चयन Commaपर Delimitersऔर आप में तुरंत परिवर्तन देखेंगे Data previewऔर अंत में क्लिक करेंFinish
sergiol

2

केवल अर्धविराम के बारे में कुछ कहने के लिए। बहुत से देश में, अल्पविराम दशमलव अवधि के लिए उपयोग होता है। अधिकतर यूरोपीय संघ की कॉलोनियां, जिनमें आधी दुनिया शामिल है, एक और आधी यूके मानक (कैसे नरक यूके इतनी बड़ी O_O) का अनुसरण करती है, इसलिए बदले में डेटाबेस के लिए अल्पविराम का उपयोग करना शामिल है जिसमें संख्या बहुत अधिक सिरदर्द पैदा करती है क्योंकि एक्सेल इसे सीमांकक के रूप में पहचानने से इनकार करता है। ।

मेरे देश में बुद्धिमान की तरह, वियतनाम, फ्रांस के मानक का पालन करते हैं, हमारे साथी हांगकांग यूके मानक का उपयोग करते हैं, इसलिए अल्पविराम CSV को अनुपयोगी बनाते हैं, और हम \ t या का उपयोग करते हैं; इसके बजाय अंतरराष्ट्रीय उपयोग के लिए, लेकिन यह अभी भी सीएसवी के दस्तावेज़ के अनुसार "मानक" नहीं है।


-3

सबसे अच्छा तरीका यह होगा कि इसे csv एक्सटेंशन वाली टेक्स्ट फाइल में सेव करें:

Sub ExportToCSV()
Dim i, j As Integer
Dim Name  As String

Dim pathfile As String

Dim fs As Object
    Dim stream As Object

    Set fs = CreateObject("Scripting.FileSystemObject")
On Error GoTo fileexists

i = 15
Name = Format(Now(), "ddmmyyHHmmss")
pathfile = "D:\1\" & Name & ".csv"

Set stream = fs.CreateTextFile(pathfile, False, True)

फाइल मौजूद है:

If Err.Number = 58 Then
    MsgBox "File already Exists"
    'Your code here
    Return
End If
On Error GoTo 0

j = 1
Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

    stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

    j = j + 1
    i = i + 1
Loop


stream.Close

End Sub
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.