我是Python的初学者,我一直在努力创建一个代码来为一组类似的csv文件添加列。
这是我到目前为止所拥有的:
import csv, os
for csvFilename in os.listdir('.'):
if not csvFilename.endswith('.csv'):
continue
print('Editing file ' + csvFilname + '...')
file = open(csvFilename)
reader = csv.reader(file)
writer = csv.writer(open('new_' + csvFilename, 'w'))
headers = reader.next()
headers.append('ColName')
writer.write(headers)
for row in reader:
row.append(str(row[12]) + ' ' + str(row[13]) + " some text")
writer.write(row)
基本上,我想添加一个列,其中我有“第13行的文本 + 第14行的文本 + 更多文本,每次都相同”。
我在 writer.write(headers)行上收到此错误消息,但是: AttributeError:'_ csv.writer'对象没有属性'write'
我该怎么办?
答案 0 :(得分:0)
您需要阅读API文档,
https://docs.python.org/3/library/csv.html
csv.writer
写入功能使用writerow
而不是write
,请检查。
要写入CSV文件的示例
import csv
with open('eggs.csv', 'w', newline='') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
答案 1 :(得分:0)
我必须重构您的代码,但这应该与您希望实现的最接近。您需要进行异常处理并检查行中是否有超过13个元素,等等。
import tempfile, os, csv
for csvFilename in os.listdir('.'):
if not csvFilename.endswith('.csv'):
continue
print('Editing file ' + csvFilename + '...')
with open(csvFilename, 'r') as csvFile:
reader = csv.reader(csvFile, delimiter=',', quotechar='"')
with open('new_' + csvFilename, 'w') as tempfile:
writer = csv.writer(tempfile, delimiter=',', quotechar='"')
header = True
for row in reader:
if (header):
row.append('ColName')
writer.writerow(row)
header = False
else:
row.append(str(row[12]) + ' ' + str(row[13]) + " some text")
writer.writerow(row)
有关python csv的更多信息:https://docs.python.org/3/library/csv.html