2017-04-06 6 views
1

私は、.csvアーカイブから情報を取得し、それをテキストファイルにリストとして出力するPythonスクリプトを作成しました。オリジナルのcsvファイルには200,000以上のフィールドがあり、入力と出力が可能ですが、プログラムを実行すると.txtファイルに36個しか出力されません。テキストファイルに数行しか出力しない

は、ここでは、コードです:

import csv 
with open('OriginalFile.csv', 'r') as csvfile: 
    emailreader = csv.reader(csvfile) 
    f = open('text.txt', 'a') 
    for row in emailreader: 
     f.write(row[1] + "\n") 

、テキストファイルには、わずか36の文字列にリストアップします。これをどうすれば解決できますか?オリジナルのCSVファイルが大きすぎるのでしょうか?

+0

入力ファイルと出力ファイルがないと、何が起こっているのかがわかりません。少なくとも、CSVファイルのフォーマットを確認してください。 –

+0

csvファイルの長さが230,000行以上で、すべての情報がフィールドごとにコンマで区切られています。スクリプトはそれらを収集し、txtファイルに出力します。https://pastebin.com/L6KzWYev – nmaurok

+0

最初の37行をここに表示します。私たちはエラー –

答えて

-1

は、次のようなもので運を持っているかもしれません:

with open('OriginalFile.csv', 'r') as csvfile: 
    emailreader = csv.reader(csvfile) 
    with open('text.txt','w') as output: 
    for line in emailreader: 
     output.write(line[1]+'\n') 
+0

なぜオペラは良い運を持っていますか? –

+0

それは多くの結果を表示し、csvファイルからの電子メールだけを出力するのではなく、私が望んでいないものをすべてエクスポートします。 – nmaurok

+0

また、コンテキストマネージャをカンマで区切ってブロックを1つ使用してください –

0

多くのコメントの後、元の問題は、csvファイル内の文字のエンコーディングでした。あなたがパンダでエンコーディングを指定すると、それはうまく読み込めます。

いつでもcsvファイル(またはExcel、SQL、R)を扱っているときは、このためにPandas DataFramesを使用します。構文は短く、何が起こっているかを知るのが簡単です。

import pandas as pd 
csvframe = pd.read_csv('OriginalFile.csv', encoding='utf-8') 
with open('text.txt', 'a') as output: 
    # I think what you wanted was the 2nd column from each row 
    output.write('\n'.join(csvframe.ix[:,1].values)) 
    # the ix is for index and : is for all the rows and the 1 is only the first column 
関連する問題