2017-12-04 9 views
0

都市で `re.findall()を使ってCSVファイルを抽出しようとしていますが、これを実行して別のCSVファイルに結果を書き込もうとすると、何度も繰り返しループします!csvファイルループの結果

import io 
import csv 
import re 

lines=0 
outfile1 =codecs.open('/mesh/وسطى.csv','w','utf_8') 
outfile6 =codecs.open('/mesh/أخرى.csv','w','utf_8') 

with io.open('/mishal.csv','r',encoding="utf-8",newline='') as f: 
    reader = csv.reader(f) 
    for row in f : 
     for rows in row: 
      lines += 1 

      #الوسطى 
      m = re.findall('\u0634\u0642\u0631\u0627\u0621',row) 
      if m: 
       outfile1.write(row) 
      else: 
       outfile6.write(row) 

print("saved In to mishal !") 
f.close() 

私はちょうど、各マッチではない試合がありますたび何度もlooooooopingに対して一度実行し、ないループにre.finall()都市をしたいです。ここで

は、過度のループを示す出力のスクリーンショットです:

screenshot of script's output

+1

入力、出力、および予想出力の例を表示できますか? – theBrainyGeek

+0

各行のループの結果が100回同じように100回ループするようになりました。写真をアップロードする方法がわかりません。 –

+0

ファイル名を続けて欲しいと思っています。名前と番号、メールごとに!あなたが私を得ることを願って –

答えて

1

CSVの読者は、ファイルの各行のリストを返す - あなたの外側のループは、ライン/行と、あなたの内側のループを反復処理されます各行の項目を繰り返し処理しています。あなたが望むものは明確ではありません。条件付きは、各行の各項目に対してと表示されます。あなたの目的は、

for row in f : 
    match = False 
    for item in row: 
     lines += 1 #?? 
     #الوسطى 
     match = re.search('\u0634\u0642\u0631\u0627\u0621',item) 
    if match: 
     outfile1.write(row) 
    else: 
     outfile6.write(row) 

をチェックして、代わりに列内の項目の行に一致があるかどうかを確認する場合はあなただけ使用せずに、ファイル内の行を反復処理同じことを達成することができCSVリーダー

with io.open('/mishal.csv','r',encoding="utf-8",newline='') as f: 
    for line in f: 
     #الوسطى 
     if re.search('\u0634\u0642\u0631\u0627\u0621',line): 
      outfile1.write(line) 
     else: 
      outfile6.write(line) 
+0

これは私にとってはうまくいかない:( –

+0

私はこの回答を削除することができますが、実際にあなたがしようとしていることは明確ではありません。 – wwii

+0

私は少なくとも1500行を含むファイルを持っています。私のためにreとその労働者がいるいくつかの都市ですが、私がCSVファイルに書き出すとき、私は画像のようにそれぞれの結果に対してループ行を取得します –

関連する問題