मैं None
और पाइथन डेटा संरचना और सीएसवी प्रतिनिधित्व के बीच पाइथन के csv
मॉड्यूल का उपयोग करके खाली स्ट्रिंग्स को अलग करना चाहता हूं।सीएसवी रीडर व्यवहार कोई और खाली स्ट्रिंग
input : [['NULL/None value', None], ['empty string', '']]
output: [['NULL/None value', ''], ['empty string', '']]
बेशक, मैं data
और data2
के साथ खेल सकते चीजों के साथ None
और रिक्त स्ट्रिंग भेद करने के लिए:
import csv, cStringIO
data = [['NULL/None value',None],
['empty string','']]
f = cStringIO.StringIO()
csv.writer(f).writerows(data)
f = cStringIO.StringIO(f.getvalue())
data2 = [e for e in csv.reader(f)]
print "input : ", data
print "output: ", data2
मैं निम्नलिखित उत्पादन प्राप्त करें:
मेरे मुद्दा यह है कि जब मैं चलाने है जैसे:
data = [d if d!=None else 'None' for d in data]
data2 = [d if d!='None' else None for d in data2]
लेकिन वह डब्ल्यू csv
मॉड्यूल (सी में लागू त्वरित deserialization/serialization, विशेष रूप से जब आप बड़ी सूचियों से निपट रहे हैं) के मेरे हित को आंशिक रूप से हराया जाएगा।
वहाँ एक csv.Dialect
या पैरामीटर csv.writer
करने और csv.reader
है कि उन्हें इस यूज-केस में ''
और None
के बीच अंतर करने के लिए सक्षम होगा है?
यदि नहीं, तो csv.writer
पर इस पैच को आगे बढ़ाने के लिए पैच को लागू करने में कोई दिलचस्पी होगी? (संभावित रूप से Dialect.None_translate_to
पैरामीटर पिछली संगतता सुनिश्चित करने के लिए ''
पर डिफ़ॉल्ट पैरामीटर)
यप ने पुष्टि की: मॉड्यूल/_csv.c में csv_writerow को देख रहे हैं (यदि (फ़ील्ड == Py_None) ...)। '' और किसी के बीच अंतर करने का कोई तरीका नहीं है। वास्तव में एक शर्म की बात है, डायलेक्ट अमूर्तता के बाद आप थोड़ा अधिक लचीलापन की उम्मीद कर सकते थे। आप सीएसवी मॉड्यूल की अन्य सीमाओं का जिक्र करते हैं, क्या आप विस्तार से ध्यान देंगे (यदि अन्य मुद्दे हैं तो मुझे वास्तव में अन्य सीएसवी-रीडिंग लेखन को देखना शुरू करना चाहिए)? – user1509316
एक सीमा जो मुझे कभी-कभी परेशान होती है वह यह है कि delimiters एक ही चरित्र होना चाहिए। तो आप एक फ़ाइल को पार्स नहीं कर सकते हैं जहां कॉलम अलग-अलग हैं, कहें, दो टैब। किसी भी चीज़ की तरह आप पार नहीं हुआ, यह काम करने के लिए काफी आसान है, लेकिन अभी भी परेशान है। – BrenBarn
मॉड्यूल के भीतर एक और हार्ड कोडित ascii सीमा है। –