2017-10-12 8 views
0

裁判所からの判決に関するデータを含むかなり大きなCSVファイルがあります。 CSVファイル全体を検索するスクリプトを作成しようとしています。単語が見つかった場合は、行全体を新しいCSVファイルにコピーする必要があります。CSVから単一ワードで複数の単語を1つのセルで検索する

CSVの各「セル」に単語が1つしかない場合は、それを実行できるスクリプトを作成することができましたが、それは私には当てはまりません。

これは私が働いているPythonスクリプトです:私は私の中で "キーワード" を入力した場合

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

# -*- 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個の以上のエントリ)のように見えますPythonのスクリプトはうまくいきます。なぜなら、 "キーワード"はセル内の単語の1つではないからです。しかし、私が欲しいのは、「補償」という言葉を入力して検索することです(他の言葉の中では第3列にあります)。

変更が必要なことを知っている人はいますか?私はここで検索しており、Googleとは、午前中は、私はいくつかの同様の質問や答えを見つけることができませんでした。

+1

'field == search:'を 'search in field:'に置き換えます。 – anupsabraham

+0

恐ろしい!そのような簡単な方法は、スクリプトが完璧に動作します!乾杯!アップシャブラハム: – Eric

答えて

0

csvファイルを解析する代わりに、すべての列を繰り返し、そのフィールドにキーワードが含まれているかどうかを確認してください(指摘されているように==の代わりにsearch in fieldを使用する必要があります)。キーワードは行のどこかにあり、その行をそのまま書いてください。:

# -*- 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

関連する問題