2012-02-19 15 views
5

लापता जाना मैं एक CSV फ़ाइल इसअजगर सीएसवी मॉड्यूल - उद्धरण

15,"I",2,41301888,"BYRNESS RAW","","BYRNESS VILLAGE","NORTHUMBERLAND","ENG" 
11,"I",3,41350101,2,2935,2,2008-01-09,1,8,0,2003-02-01,,2009-12-22,2003-02-11,377016.00,601912.00,377105.00,602354.00,10 

की तरह डेटा मैं इस पढ़ रहा हूँ और उसके बाद अलग CSV फ़ाइलों के लिए अलग अलग पंक्तियों लिख है कि है।

हालांकि, मूल डेटा में वहाँ गैर संख्यात्मक फ़ील्ड के आसपास उद्धरण, कर रहे हैं के रूप में उनमें से कुछ क्षेत्र के भीतर अल्पविराम।

मैं उद्धरण रखने में सक्षम नहीं हूं।

मैंने बहुत से शोध किए हैं और quoting=csv.QUOTE_NONNUMERIC की खोज की है, लेकिन अब यह हर क्षेत्र के आसपास एक उद्धरण चिह्न में परिणाम देता है और मुझे नहीं पता क्यों ??

तो मैं मैं दिनांक मान, 2008/1/9, एक नाव नहीं किया जा रहा से संबंधित त्रुटि संदेश के साथ खत्म न्यूनतम जैसे अन्य के हवाले से किसी एक विकल्प का प्रयास करें।

मैं, एक बोली बनाने के लिए सीएसवी पाठक और लेखक लेकिन कुछ भी मैं मूल डेटा को सटीक रूप से मेल प्राप्त करने में परिणाम की कोशिश की है पर के हवाले से जोड़ने की कोशिश की है।

किसी को भी यही समस्या थी और एक समाधान मिला।

+2

स्रोत में उद्धरण शुरू करने के लिए असंगत है। –

+0

स्रोत में मैंने वर्णित गैर-संख्यात्मक के आसपास उद्धरण दिए हैं।यह लगातार – tjmgis

+0

तिथियां संख्यात्मक नहीं हैं। और इसे पढ़ने के बाद कुछ भी संख्यात्मक नहीं है। –

उत्तर

7

लिखते समय, quoting=csv.QUOTE_NONNUMERICसंख्या, यानी लिखते समय मानों को अनजान रखता है। यदि उनका प्रकार int या float (उदाहरण के लिए) है, जिसका अर्थ है कि यह आपके द्वारा अपेक्षित चीज़ों को लिख देगा।

आपका समस्या हो सकती है कि, जब पढ़ने, एक csv.reader एक की list तार में प्रत्येक पंक्ति इसे पढ़ता हो जाएगा (यदि आप ध्यान से पर्याप्त दस्तावेज़ पढ़ें, तो आप एक पाठक करता नहीं स्वचालित डेटा प्रदर्शन देखेंगे जैसे रूपांतरण!

आप रूपांतरण किसी भी तरह का प्रदर्शन नहीं करते पढ़ने के बाद, फिर जब आप लिखते हैं तो आप उद्धरण पर सब कुछ के साथ समाप्त होगा ... क्योंकि सब कुछ आप लिखते हैं एक श्रृंखला है।

संपादित करें: बेशक, तारीख फ़ील्ड उद्धृत किया जाएगा, क्योंकि वे संख्या नहीं हैं, जिसका अर्थ है कि आप मानक csv.writer का उपयोग कर सटीक अपेक्षित व्यवहार नहीं प्राप्त कर सकते हैं।

0

मूल डेटा का एक "सटीक मिलान" पाने के लिए कोशिश कर रहा एक मुश्किल और संभावित निरर्थक प्रयास है। quoting=csv.QUOTE_NONNUMERIC सबकुछ के चारों ओर उद्धरण डालते हैं क्योंकि प्रत्येक फ़ील्ड एक स्ट्रिंग था जब आप इसे पढ़ते थे।

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

1

क्या आप वाकई कोई समस्या है? जिस व्यवहार का आप वर्णन कर रहे हैं वह सही है: csv मॉड्यूल उद्धरण में तारों को संलग्न करेगा, यदि आवश्यक हो तो आवश्यक है। तो आपको केवल कॉमा, न्यूलाइन, इत्यादि वाले तारों के चारों ओर उद्धरण देखने की उम्मीद करनी चाहिए। जब ​​तक आपको अपने आउटपुट को वापस पढ़ने में त्रुटियां नहीं मिल रही हैं, तो कोई समस्या नहीं है।

संबंधित मुद्दे