2017-04-06 27 views
1

我做了一個Python腳本,從.csv檔案抓住信息,並輸出到一個文本文件的列表。原始的csv文件有超過200,000個字段可供輸入和輸出,但是當我運行我的程序時,它只輸出36到.txt文件中。輸出只有幾行到一個文本文件,而不是所有的人都

下面的代碼:

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

此外,使用單塊帶,用逗號分隔的上下文管理 –

0

很多評論後,原來的問題是在CSV文件的字符編碼。如果你在pandas中指定編碼,它會讀取它就好了。

任何時候你正在處理一個CSV文件(或excel,SQL或R)我會用熊貓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 
相關問題