我在 txt 檔案中保存了一些測驗資料行,如下所示:
$PZFM1,A,1,0,0,0,0,0,2,3,008,000,000,201149*6A
$PZFM2,A,1,000,000,000,011*43
$PZFM3,A,1,800*56
$PZFM4,A,1,0000*69
我想逐行讀取它并使用python寫入一個csv檔案。到目前為止我的代碼:
import csv
testdata_name = 'data_test.txt'
save_data = open('data.csv','w',newline='', encoding='utf-8')
writer = csv.writer(save_data)
test = open(testdata_name,'r')
while 1:
line_test = test.readline()
print("Input: " line_test)
writer.writerow(line_test)
輸出如下:
$,P,Z,F,M,1,",",A,",",1,",",0,",",0,",",0,",",0,",",0,",",2,",",3,",",0,0,8,",",0,0,0,",",0,0,0,",",2,0,1,1,4,9,*,6,A,"
"
$,P,Z,F,M,2,",",A,",",1,",",0,0,0,",",0,0,0,",",0,0,0,",",0,1,1,*,4,3,"
"
$,P,Z,F,M,3,",",A,",",1,",",8,0,0,*,5,6,"
"
$,P,Z,F,M,4,",",A,",",1,",",0,0,0,0,*,6,9
但是,csv 檔案中的資料看起來不像 txt 檔案中的資料是一對一的,這實際上是我的目標。我究竟做錯了什么?
uj5u.com熱心網友回復:
writer.writerow(line_test)期望一個 List 包含您要寫入的行的列的內容。但是,您writerow使用字串 ( str) 提供函式。
由于字串是字符陣列,因此它為行中的每個字符創建一列。
要分隔您的欄位(如果您的欄位用逗號分隔),您可以使用
writer.writerow(line_test.split(","))
這樣,首先將字串轉換為包含每個欄位的陣列。
但是,正如@Fang 所說,您的檔案已經是CSV,您可以在更改擴展名后使用電子表格軟體打開它
編輯:放置逗號周圍的引號是為了區分逗號作為分隔符和逗號作為字符
uj5u.com熱心網友回復:
test.readline()回傳一個字串,它是一個序列。
然后你做writer.writerow(line_test),它需要一個串列(用逗號分隔它們的值)或另一個序列。所以writerow迭代line_test(這是一個字串,所以它yield是單個字符,并將每個字符寫為一個值。所以你得到一個逗號分隔的字符行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/475904.html
