簡體   English   中英

發布刪除特定行,在Python中使用制表符分隔的列將.txt轉換為.csv

[英]Post deleting specific line, convert .txt to .csv with tab separated columns in Python

我所擁有的:巨大的文本數據(.txt),文本之間用制表符分隔。

我想要的是:使用Python將文本(.txt)轉換為CSV(.csv),將每個單詞用制表符分隔在不同的列中。

// Start Time: 10
// Update Rate: 2
// Scenario: 367.3
// Firmware Version: 1.1.1
Count   Temp    V_X V_Y V_Z
25  0   0.28    0.43    -0.07
23  4   0.34    0.33    -0.03
22  3   0.34    0.23    -0.04
21  2   0.35    0.43    -0.03
27  3   0.33    0.33    -0.12

第一個問題是我想從文本文件中刪除所有行。 第二個問題是我想將所有制表符分隔的文本數據放入csv列中。

這是我目前正在做的事情,

infile = open('/Users/parth_To_File/myData.txt','r').readlines()
with open('/Users/parth_To_File/out_myData.txt','w') as outfile:
    for index,line in enumerate(infile):
        if index != 0:
            outfile.write(line)

我正在運行上述代碼4次以獲取數據中的冗余信息的紅色。 然后,我使用下面的代碼轉換csv文件中的數據。

save_path = "/Users/parth_To_File/"
in_filename = os.path.join(save_path,'myData.txt')
out_filename = os.path.join(save_path,'out_myData.csv')
df = pd.read_csv(in_filename, sep=";")
df.to_csv(out_filename, index=False)

我使用的方法存在的問題是-代碼未針對從txt數據中刪除特定行進行優化-代碼未提供單獨列的正確表格數據

如果有人可以幫助我了解按照上述需求執行txt到csv轉換的正確方法,我將不勝感激。

用制表符分隔的文件是TSV格式( https://en.wikipedia.org/wiki/Tab-separated_values )。 熊貓對此表示支持。 你可以做:

df = pd.read_csv('input.tsv', sep='\t', skiprows=4)
df.to_csv('input.csv', index=False, sep=",")

一切都由熊貓提供,無需自己逐行讀取文件。 您可以使用read_csv並將分隔符設置為'\\ t'。 跳過以comment字符開頭的行:

df = pd.read_csv('myData.txt', sep = '\t', comment = '/')

輸出:

   Count  Temp   V_X   V_Y   V_Z
0     25     0  0.28  0.43 -0.07
1     23     4  0.34  0.33 -0.03
2     22     3  0.34  0.23 -0.04
3     21     2  0.35  0.43 -0.03
4     27     3  0.33  0.33 -0.12


如果您只需要將TSV文件轉換為CSV,也可以通過以下任何一種操作而無需任何編程即可:

sed '/\//d; s/\t/,/g' myData.txt > myData.csv

要么

 sed '/\\//d; s/\\t/,/g' myData.txt > myData.csv 

前者將所有制表符轉換為從#5行開始的逗號,而后者將所有非以/開頭的行轉換為逗號。
如果您的文件很大 ,那么這可能比先將其轉換為pandas數據幀要快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM