在Python中加载包含太多逗号的数据文件

时间:2015-01-15 10:39:20

标签: python numpy comma data-files

我正在尝试从.txt文件中收集一些数据到我的python脚本中。问题是,当收集数据时,它无法收集其中一列中的数据,这给了我比平时更多的逗号。它看起来像这样: 0,0 ,, - 2235 1100 ,, - 2209 2200 ,, - 2209

我想要的只是加载数据并删除逗号,但是当我尝试使用numpy.loadtxt时,它会给我一个值错误。我该怎么办?

3 个答案:

答案 0 :(得分:1)

这实际上取决于你想要做什么。我需要看一个代码示例,看看你真正要做的是什么。你可以用一个替换双逗号

inputstr = "0,0,,-2235 1,100,,-2209 2,200,,-2209"
inputstr = inputstr.replace(",,",",")

或者,如果您不想丢失字符串中数据的位置,可以用空值排除双重逗号

inputstr = "0,0,,-2235 1,100,,-2209 2,200,,-2209"
inputstr = inputstr.replace(",,",",0,")

关键是你不想破坏数据,并引入不应存在的值。这真的是关于数据意味着什么以及你想要做什么。

答案 1 :(得分:0)

您可以使用正则表达式模块进行拆分

In[1]: import re
In[2]: re.split(',,|,', '0,0,,-2235 1,100,,-2209 2,200,,-2209')
Out[2]: ['0', '0', '-2235 1', '100', '-2209 2', '200', '-2209']

',,|,'表示首先在,,拆分,然后在结果中,它继续在,拆分。

因此,如果您想获得-22351而不是-2235 1,可以使用',,|,| '',,|,|\s'来放松眼睛({{1} }表示\s)。

答案 2 :(得分:0)

我不知道这是否是一个选项,但您可以使用tr -s ',' file.txt对其进行预处理。这是一个shell命令,因此您必须在调用python或使用system之前执行此操作。后者可能不是最好的方法,因为dragon2fly使用python函数解决了这个问题。