2017-10-12 139 views
0

我有相当大的CSV文件包含有关法院案件判决的数据。我试图创建一个脚本来搜索整个CSV文件,如果找到一个单词,整行应该被复制到一个新的CSV文件。单个单词搜索从一个单元格中的多个单词的CSV

我设法创建了一个脚本,可以在CSV的每个“单元格”中只有一个单词的情况下执行此操作,但对我而言情况并非如此。

这是Python脚本我工作:

# -*- coding: utf-8 -*- 
import sys 
import csv 
import re 

writeFile = open('verdictsOutput.csv', 'wb') 
writer = csv.writer(writeFile) 

with open('TestDomstol.csv', 'r') as verdictFileInput: 
    search = input("Enter keyword: ") 
    verdictFileReader = csv.reader(verdictFileInput, delimiter=';') 
    for row in verdictFileReader: 
     for field in row: 
      if field == search: 
       writer.writerow(row) 

TestDomstol.csv看起来是这样的(大于1000个条目):

F1234;2019-09-22;Appeal over the decision bla bla, diaria number X regarding utility easement, compensation in Sweden;Utility easement;keyword 

如果我输入的 “关键字” 我Python脚本工作正常,因为“关键字”只是单元格中的一个单词。但我想要的是能够输入和搜索“补偿”(这是在许多其他词中的第三列)这个词。

有没有人知道需要做些什么改变?我已经在这里和谷歌一起搜索了整个上午,但我一直没有找到类似的问题或答案。

+1

用'search in field:'替换'field == search:'。 – anupsabraham

+0

太棒了!这么简单的方法,脚本完美无瑕!欢呼anupsabraham :) – Eric

回答

0

而是在解析csv文件,ITER所有列,并检查该字段的一个包含关键字(你应该使用search in field代替==为anupsabraham指出的),你也可以在这里节省一些处理能力和检查该关键字是在行中的某个地方,并原样写入该行。:

# -*- coding: utf-8 -*- 

in_file = 'TestDomstol.csv' 
out_file = 'verdictsOutput.csv' 
search = raw_input("Enter keyword: ") 

with open(in_file, 'r') as verdictFileInput: 
    header = verdictFileInput.next() 
    with open(out_file, 'wb') as verdictFileOutput: 
     verdictFileOutput.write(header) 
     for line in verdictFileInput: 
      if search in line: 
       verdictFileOutput.write(line) 
+0

谢谢!我也会尝试你的解决方案。 先前提问的问题看起来像是在这里回答我的问题。当你不搜索正确的术语时很难找到。无论如何,我的脚本现在可以工作,所以可以继续进行常规工作:)非常感谢! – Eric

相关问题