我有一个包含字符串列表的文本文件。
我想在 .csv 文件中搜索以这些字符串开头的行,并将它们放入新的 .csv 文件中。
在这种情况下,文本文件名为“output.txt”,原始 .csv 为“input.csv”,新的 .csv 文件为“corrected.csv”。
代码:
import csv
file = open('output.txt')
while 1:
line = file.readline()
writer = csv.writer(open('corrected.csv','wb'), dialect = 'excel')
for row in csv.reader('input.csv'):
if not row[0].startswith(line):
writer.writerow(row)
writer.close()
if not line:
break
pass
错误:
Traceback (most recent call last):
File "C:\Python32\Sample Program\csvParser.py", line 9, in <module>
writer.writerow(row)
TypeError: 'str' does not support the buffer interface`
新错误:
Traceback (most recent call last):
File "C:\Python32\Sample Program\csvParser.py", line 12, in <module>
for row in reader:
_csv.Error: line contains NULL byte
问题是 CSV 文件是用制表符而不是逗号保存的,现在的新问题如下:
Traceback (most recent call last):
File "C:\Python32\Sample Program\csvParser.py", line 13, in <module>
if row[0] not in lines:
IndexError: list index out of range
CSV 文件有 500 多个数据条目...这有什么不同吗?
请您参考如下方法:
如果您查看 documentation ,这是 reader 的初始化方式:
spamReader = csv.reader(open('eggs.csv', 'r'), ...
注意 open('eggs.csv, 'rb')。您没有在 9 行中传递 file 句柄,因此 str 被视为文件句柄并向您抛出错误。
将第 9 行替换为:
csv.reader(open('input.csv', 'r', newline = ''))
