[कृपया ध्यान दें कि इस से पहले से ही उत्तर एक अलग प्रश्न है How to replace a column using Python’s built-in .csv writer module?]साथ लेखन अजगर के अंतर्निहित .csv मॉड्यूल
मैं एक मिल रहा है और (URL में से एक स्तंभ के लिए विशिष्ट) एक विशाल में प्रतिस्थापित करने की आवश्यकता एक्सेल .csv फ़ाइल। चूंकि मैं खुद को एक स्क्रिप्टिंग भाषा सिखाने की कोशिश करने के शुरुआती चरणों में हूं, मुझे लगा कि मैं अजगर में समाधान को लागू करने का प्रयास करूंगा।
जब मैं किसी प्रविष्टि की सामग्री में परिवर्तन करने के बाद .csv फ़ाइल पर वापस लिखने का प्रयास करता हूं तो मुझे परेशानी हो रही है। मैंने लेखक का उपयोग करने के तरीके के बारे में official csv module documentation पढ़ा है, लेकिन इस मामले को शामिल करने वाला कोई उदाहरण नहीं है। विशेष रूप से, मैं एक लूप में पूरा किए गए कार्यों को पढ़ने, प्रतिस्थापित करने और लिखने की कोशिश कर रहा हूं। हालांकि, कोई भी लूप के तर्क और लेखक.writerow() के पैरामीटर के रूप में एक ही 'पंक्ति' संदर्भ का उपयोग नहीं कर सकता है। इसलिए, एक बार जब मैंने लूप में बदलाव किया है, तो मुझे फ़ाइल पर वापस कैसे लिखना चाहिए?
संपादित करें: मैं एस लोट और जिमी से सुझाव लागू किया, अब भी वही परिणाम
# 2 संपादित करें: मैं खुला करने के लिए "rb" और "पश्चिम बंगाल" जोड़ा() काम करता है, प्रति एस लोट के सुझाव
import csv
#filename = 'C:/Documents and Settings/username/My Documents/PALTemplateData.xls'
csvfile = open("PALTemplateData.csv","rb")
csvout = open("PALTemplateDataOUT.csv","wb")
reader = csv.reader(csvfile)
writer = csv.writer(csvout)
changed = 0;
for row in reader:
row[-1] = row[-1].replace('/?', '?')
writer.writerow(row) #this is the line that's causing issues
changed=changed+1
print('Total URLs changed:', changed)
संपादित करें: आपके संदर्भ के लिए, इस दुभाषिया से नई पूर्ण ट्रैस है:
Traceback (most recent call last):
File "C:\Documents and Settings\g41092\My Documents\palScript.py", line 13, in <module>
for row in reader:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
ठीक है, मैंने भी उस मुद्दे का ख्याल रखा। ऐसा लगता है कि हम करीब आ रहे हैं ... ट्रेसबैक कम हो गया :) – ignorantslut
अब जब मैं फ़ाइल पर वापस लिखने का प्रयास करने से पहले, इसके बारे में सोचता हूं (यानी, जब मैं अभी भी सही कॉलम ढूंढने पर काम कर रहा था .csv), स्क्रिप्ट आरबी के बिना बस ठीक काम किया। – ignorantslut
"द" आरबी "और" डब्ल्यूबी "बिल्कुल जरूरी हैं।": पायथन 3 में नहीं। वहां, आपको newline = '' के साथ खुले() को कॉल करना चाहिए। – Miles