如何使用 Python 删除 CSV 中每一行末尾的逗号?

How to remove a comma at the end every row in a CSV with Python?

我正在研究比特币数据,想去掉 CSV 文件中每一行末尾的逗号。例如,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

我应该使用 Pandas 还是 Numpy 来实现我想要的?如果是这样,我该怎么做?谢谢!

这完全取决于您如何 reading/parsing 文件。鉴于它是一个 csv,使用 csvreader 可能不会导致需要手动删除逗号。但是,如果您愿意,根据您的设置,有几种方法:

如果您将每一行作为列表中的独立项目读取,则可以使用 .pop() 删除列表中的最后一项,或者如果它呈现为长字符串或字符串列表,您可以简单地删除最后一个字符(逗号)或迭代到行的最后一项,然后删除最后一个字符:

new_str = old_str[:-1]

new_str 是 comma-removed 项,old_str 是整行或行中的最后一项,具体取决于您读取文件的方式。然后您可以保存文件为 csv 或执行其他操作。

简单地迭代读写文件行并切掉最后两个字符(换行符 \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)

如果文件名是 'textsample.txt' 就在 python 提示符

中 运行
for line in fileinput.input('textsample.txt'):
    line = re.sub('(,)[^,]*$','\r', line.rstrip())
    print(line)

在您的情况下,您只能读取第一个“6”列,因为最后一个包含额外的逗号。要做这个参数usecolsread_csvfunction.Here就是代码:

import pandas as pd
pd.read_csv(path, usecols=range(6))

使用 Colaboratoy 的解决方案是:

import pandas as pd
from google.colab import files
import io
uploaded = files.upload()
x_train = pd.read_csv(io.StringIO(uploaded['x_train.csv'].decode('utf-8')), skiprows=1, usecols=range(6) ,header=None)