如何使用 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”列,因为最后一个包含额外的逗号。要做这个参数usecols
在read_csv
function.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)
我正在研究比特币数据,想去掉 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”列,因为最后一个包含额外的逗号。要做这个参数usecols
在read_csv
function.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)