我有一个包含字符串列表的文本文件.
我想在.csv文件中搜索以这些字符串开头的行,并将它们放在一个新的.csv文件中.
在这种情况下,文本文件称为"output.txt",原始.csv为"input.csv",新的.csv文件为"correct.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
Run Code Online (Sandbox Code Playgroud)
错误:
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`
Run Code Online (Sandbox Code Playgroud)
新错误:
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
Run Code Online (Sandbox Code Playgroud)
问题是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
Run Code Online (Sandbox Code Playgroud)
CSV文件有500多个数据条目......这有什么不同吗?
如果查看文档,这reader是初始化的方式:
spamReader = csv.reader(open('eggs.csv', 'r'), ...
Run Code Online (Sandbox Code Playgroud)
请注意open('eggs.csv, 'rb').你没有传递一个file句柄9,所以str它被视为一个文件句柄,并向你抛出错误.
9用这个替换:
csv.reader(open('input.csv', 'r', newline = ''))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4189 次 |
| 最近记录: |