Skip to main content
 首页 » 编程设计

python之这个在 .csv 上运行的 python 程序有什么问题

2025年05月04日19me-sa

我有一个包含字符串列表的文本文件。

我想在 .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 = ''))