【发布时间】:2013-10-19 23:37:15
【问题描述】:
我正在尝试通过复制 col#3 添加新列,然后将 @hotmail 附加到新列
这是脚本,唯一的问题是它不会完成对输入文件的处理,它只在输出文件中显示 61409 行,而在输入文件中有 61438 行。
此外,还有一条错误消息(输入文件末尾没有空行):
电子邮件 = 行 [3]
IndexError: 列表索引超出范围
inFile = 'c:\\Python27\\scripts\\intake.csv'
outFile = 'c:\\Python27\\scripts\\final.csv'
with open(inFile, 'rb') as fp_in1, open(outFile, 'wb') as fp_out1:
writer = csv.writer(fp_out1, delimiter=",")
reader = csv.reader(fp_in1, delimiter=",")
for col in reader:
del col[6:]
writer.writerow(col)
headers = next(reader)
writer.writerow(headers + ['email2'])
for row in reader:
if len(row) > 3:
email = email.split('@', 1)[0] + '@hotmail.com'
writer.writerow(row + [email])
【问题讨论】:
-
您的错误消息似乎是指代码中没有的行。如果您在访问
row[3]时收到IndexError,那么只需在访问之前添加print row,看看哪一行给您带来了麻烦。对于您发布的代码,在您完成for col in reader:循环后,您位于文件的末尾,所以我看不到next(reader)或for row in reader:将如何工作/做任何事情。 -
我同意@DSM,你应该发布你的实际代码,或者行为相同的东西。
-
您使用的是之前问题中的代码:stackoverflow.com/questions/19324968/python-csv-copy-column 吗?如果是这样,也许您应该添加到该问题而不是开始一个新问题。