【发布时间】:2017-07-26 18:34:38
【问题描述】:
我有一个我正在尝试运行的代码,它将比较 csv 文件中的值与我在 py 文件中设置的阈值。
我的 csv 文件有一个类似于下面的输出,但有 1030 行
-46.62
-47.42
-47.36
-47.27
-47.36
-47.24
-47.24
-47.03
-47.12
注意:值之间没有线,但它们之前有一个空格。
我的第一次尝试是使用以下代码:
file_in5 = open('710_edited_capture.csv', 'r')
line5=file_in5.readlines()
a=line5[102]
b=line5[307]
c=line5[512]
d=line5[717]
e=line5[922]
print[a]
print[b]
print[c]
print[d]
print[e]
它给出了以下输出:
[' -44.94\n']
[' -45.06\n']
[' -45.09\n']
[' -45.63\n']
[' -45.92\n']
我的第一个想法是使用.strip() 删除空格和\n,但这在列表中不受支持并返回错误:
Traceback (most recent call last):
File "/root/test.py", line 101, in <module>
line5=line5.strip()
AttributeError: 'list' object has no attribute 'strip'
我的下一个代码如下:
for line5 in file_in5:
line5=line5.strip()
line5=file_in5.readlines()
a=line5[102]
b=line5[307]
c=line5[512]
d=line5[717]
e=line5[922]
print[a]
print[b]
print[c]
print[d]
print[e]
返回另一个错误:
Traceback (most recent call last):
File "/root/test.py", line 91, in <module>
line5=file_in5.readlines()
ValueError: Mixing iteration and read methods would lose data
什么是最有效的方法是只读取 5 个特定行而没有任何空格或\n,然后能够在后续计算中使用它们,例如:
if a>threshold and a>b and a>c and a>d and a>e:
print ('a is highest and within limit')
CF=a
【问题讨论】:
-
删除
print[whatever]中的括号。每次打印任何内容时都会构建一个单元素列表,这会让您感到困惑。 -
恕我直言,您应该使用正确的
csv.reader来读取 csv 数据。
标签: python-2.7 strip readlines