2017-02-11 77 views
0

我正在玩比特幣數據,並希望擺脫CSV文件中每行末尾的逗號。例如,CSV數據看起來是這樣的....如何使用Python在CSV中的每一行中刪除逗號?

Date Time,Open,High,Low,Close,Volume 
2012-01-01 04:15:00,4.58,4.58,4.58,4.58,1.502, 
2012-01-01 15:15:00,4.84,4.84,4.84,4.84,10.0, 
2012-01-01 22:45:00,5.0,5.0,5.0,5.0,10.1, 
2012-01-02 20:00:00,5.0,5.0,5.0,5.0,19.048, 
2012-01-03 11:45:00,5.32,5.32,5.32,5.32,2.41917293, 
2012-01-03 14:15:00,5.14,5.14,5.14,5.14,0.68, 

而且我想使它看起來像這樣

Date Time,Open,High,Low,Close,Volume 
2012-01-01 04:15:00,4.58,4.58,4.58,4.58,1.502 
2012-01-01 15:15:00,4.84,4.84,4.84,4.84,10.0 
2012-01-01 22:45:00,5.0,5.0,5.0,5.0,10.1 
2012-01-02 20:00:00,5.0,5.0,5.0,5.0,19.048 
2012-01-03 11:45:00,5.32,5.32,5.32,5.32,2.41917293 
2012-01-03 14:15:00,5.14,5.14,5.14,5.14,0.68 

我應該用熊貓或numpy的,以實現我想要什麼?如果是這樣,我該怎麼做?謝謝!

回答

1

只需迭代讀寫文件行並切掉最後兩個字符(換行符\n和逗號)即可。可能的話,你將需要刪除馬車以及\r\n

with open('RemoveCommasInput.csv', 'r') as r, open('RemoveCommasOutput.csv', 'w') as w:  
    for num, line in enumerate(r): 
     if num > 0:    
      newline = line[:-2] + "\n" if "\n" in line else line[:-1] 
     else: 
      newline = line    
     w.write(newline) 
+0

謝謝,作品像一個魅力! – BillyRay

+0

這將在例子中從'Volume'中刪除'e' ... – dawg

+0

是的,我不得不把它重新添加回 – BillyRay

1

這一切都取決於你如何閱讀/解析文件。鑑於它是csv,使用csvreader可能不會導致需要手動刪除逗號。但是,如果您傾向於採用以下幾種方法,則取決於您的設置:

如果您在列中以獨立項目的形式閱讀每行,則可以使用.pop()刪除列表中的最後一項或者呈現爲長字符串或字符串列表,你可以簡單地刪除最後一個字符(逗號)或迭代到該行的最後一個項目,然後用刪除最後一個字符:

new_str = old_str[:-1] 

new_str是逗號刪除項目和old_str可能是行中的整行或最後一項,具體取決於讀取文件的方式。然後可以將文件另存爲csv或執行其他操作。

+0

謝謝,我用不同的方法,但欣賞答案! – BillyRay

0

如果文件名是「textsample.txt」只要運行這個在Python提示

for line in fileinput.input('textsample.txt'): 
    line = re.sub('(,)[^,]*$','\r', line.rstrip()) 
    print(line) 
相關問題