2017-03-14 146 views
0

我有以下問題:如何製表符分隔的文本文件轉換爲csv文件在Python

我想製表符分隔的文本文件轉換爲csv文件。該文本文件是我想用於情感分析的SentiWS字典(https://github.com/MechLabEngineering/Tatort-Analyzer-ME/tree/master/SentiWS_v1.8c)。

我曾經這樣做,這是下面的代碼:

txt_file = r"SentiWS_v1.8c_Positive.txt" 
csv_file = r"NewProcessedDoc.csv" 

in_txt = csv.reader(open(txt_file, "r"), delimiter = '\t') 
out_csv = csv.writer(open(csv_file, 'w')) 

out_csv.writerows(in_txt) 

該代碼一行寫的一切,但我需要的數據是三排爲常從文件本身預期。每個數據下面還有一個空行,我不知道爲什麼。

我希望數據是這種形式:

ROW1行2ROW3

字數據字

字數據字

,而不是

ROW1

字,數據字

字,數據字

誰能幫助我?

+0

是什麼問題?你的腳本似乎對我很好。你能包括你的腳本的** actual **輸出的幾行(不只是「row1 row2 row3」),然後是你想要的格式的相同的幾行? – maxymoo

回答

0

試試這個:

import csv 

txt_file = r"SentiWS_v1.8c_Positive.txt" 
csv_file = r"NewProcessedDoc.csv" 

with open(txt_file, "r") as in_text: 
    in_reader = csv.reader(in_text, delimiter = '\t') 
    with open(csv_file, "w") as out_csv: 
     out_writer = csv.writer(out_csv, newline='') 
     for row in in_reader: 
      out_writer.writerow(row) 

還有下每個數據的空行,我不知道爲什麼。

您可能正在使用在基於Windows的文本編輯器中創建或編輯的文件。據the Python 3 csv module docs

如果newline=''未指定,嵌入式引述領域內的換行符將無法正確解釋,並且在使用上寫一個額外的\r將被添加\r\n linendings平臺。指定newline=''應始終是安全的,因爲csv模塊自行執行(universal)換行處理。

+0

thx很多丹! 「newline =''」解決了這個問題。 – gHOsTaManTe

+0

不客氣,@ gHOsTaManTe - 如果這能解決您的問題,請注意並標記爲已接受的答案。 – Dan

相關問題