我有这个简单的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
为什么输出有空格,我们如何删除它们。
答案 0 :(得分:3)
我无法重现您的结果。我创建了一个文件,其中有一些行作为示例中的一行,但是在行之间打印空行(一行用于行尾,一行用于print
),字符之间没有空格
请注意打印行开头有趣的方形符号?这可能是文件编码的问题。
答案 1 :(得分: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)