我是python的新手,我试图通过匹配特定字符串来减少csv文件记录。我想将匹配的行写入新的csv文件。
以下是一个示例数据集:
我想要做的是搜索特定匹配关键字的所有行(例如,只将包含WARRANT ARREST的行写入图像中)可以查找到新的csv文件。
这是我目前的代码:
import csv
with open('test.csv', 'a') as myfile:
with open('train3.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for r in spamreader:
for field in row:
if field == "OTHER OFFENSES":
myfile.write(r)
test.csv
为空,train3
包含所有记录。
答案 0 :(得分:0)
尝试以下方法,由于无法复制/粘贴数据,因此测试有点困难:
import csv
with open('test.csv', 'a', newline='') as f_outputcsv, open('train3.csv', 'r') as f_inputcsv:
csv_spamreader = csv.reader(f_inputcsv)
csv_writer = csv.writer(f_outputcsv)
for row in csv_spamreader:
for field in row:
if field == "WARRANT ARREST":
csv_writer.writerow(row)
break
这使用csv.writer
实例将整行写回输出文件。
答案 1 :(得分:0)
通过简单地添加一些else
语句,您通常可以了解很多事情。例如,在if field == "OTHER OFFENSES":
之后,您可以写else: print(field)
或else: print(r)
。一旦看到实际数据,您的比较失败可能会变得很明显。
在每一行之后可能还会有一个换行符,这会影响比较(这是上次有人问起这个问题的原因,我回答了)。也许python看到OTHER OFFENSES\n
不等于OTHER OFFENCES
。要匹配这些,请使用不太严格的比较或strip()
字段。
尝试将if field == "OTHER OFFENSES"
替换为if "OTHER OFFENSES" in field:
。当您执行==
时,您要求完全匹配,而something in something_else
将搜索something
的整行文字。