2

我有这个简单的python脚本:

with open("records.csv", "r") as f:
    for line in f:
        print line

records.cvs包含许多行,如下所示。

,0.055,,,,109.889456433,119.043269058,128.455997141,,,,-0.607526459169,-1.28987216622,-1.36255539212,-0.0783128865694,-0.0745923352488,-0.0722692557059,0.325311331044,0.61140286319,0.0509661014105,0.719556483734

但是,我们上面的脚本打印以下输出,字符之间有空格。

 ■,0。0 5 5 , , , , 1 0 9 。8 8 9 4 5 6 4 3 3 , 1 1 9 。0 4 3 2 6 9 0 5 8 , 1 2 8 。4 5 5 9 9 7 1 4 1 , , , , - 0 。6 0 7 5 2 6 4 5 9 1 6 9, - 1。2 8 9 8 7 2 1 6 6 2 2,-1。3 6 2 5 5 5 3 9 2 1 2,-0。0 7 8 3 1 2 8 8 6 5 6 9 4,-0。0 7 4 5 9 2 3 3 5 2 4 8 8 , - 0 。0 7 2 2 6 9 2 5 5 7 0 5 9 , 0 。3 2 5 3 1 1 3 3 1 0 4 4 , 0 。6 1 1 4 0 2 8 6 3 1 , 0 。0 5 0 9 6 6 1 0 1 4 1 0 5 , 0 。7 1 9 5 5 6 4 8 3 7 3 4

为什么输出有空格,我们如何删除它们。

4

2 回答 2

3

我无法重现您的结果。我创建了一个文件,其中包含多行作为示例中的行,但是虽然它在行之间打印空行(一行用于行尾,一行用于print),但字符之间没有空格。

请注意打印行开头的有趣方形符号?这可能是文件编码的问题。

于 2013-06-20T18:01:47.637 回答
1

也许您的意思是使用csv.reader

import csv

with open("records.csv", "r") as f:
    csvin = csv.reader(f)
    for line in csvin:
        print line

line然后将是 CSV 文件每一行中的列的列表 - 您可以按照自己的方式使用它(例如,在可能的情况下将每个列转换为整数/浮点数)。

尝试先过滤掉不可打印的字符...

import re在你之后with statement,更改为:

lines = (re.sub('[^-0-9.,]', '', line) for line in f)
csvin = csv.reader(lines)
于 2013-06-20T17:42:46.040 回答