【问题标题】:How to remove a comma at the end every row in a CSV with Python?如何使用 Python 删除 CSV 中每一行末尾的逗号?
【发布时间】:2017-06-29 12:40:06
【问题描述】:

我正在处理比特币数据,并希望去掉 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 来实现我想要的?如果是这样,我该怎么做?谢谢!

【问题讨论】:

    标签: python csv pandas numpy comma


    【解决方案1】:

    这一切都取决于您如何读取/解析文件。鉴于它是 csv,使用 csvreader 可能不需要手动删除逗号。但是,如果您愿意,有几种方法取决于您的设置:

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

    new_str = old_str[:-1]
    

    new_str 是逗号删除的项目,old_str 是整行或行中的最后一项,具体取决于您读取文件的方式。然后您可以将文件另存为 csv 或执行其他操作.

    【讨论】:

    • 谢谢,我使用了不同的方法,但感谢您的回答!
    【解决方案2】:

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

    【讨论】:

    • 是的,我必须重新添加它
    • 不错!很有创意。每天学习新事物
    【解决方案3】:

    如果文件名是“textsample.txt”,只需在 python 提示符下运行它

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

    【讨论】:

      【解决方案4】:

      在你的情况下,你只能读取第一个“6”列,因为最后一个包含额外的逗号。在read_csv函数中做这个参数usecols。这里是代码:

      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)
      

      【讨论】:

        猜你喜欢
        • 2020-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-20
        • 2016-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多