我有一个我正在尝试运行的代码,它将比较 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.94n']
[' -45.06n']
[' -45.09n']
[' -45.63n']
[' -45.92n']
我的第一个想法是使用.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
在没有任何空格或n
的情况下读取 5 个特定行的最有效方法是什么,然后能够在后续计算中使用它们,例如:
if a>threshold and a>b and a>c and a>d and a>e:
print ('a is highest and within limit')
CF=a
你可以使用strip((,但你需要使用 read(( 而不是 readlines((。另一种方式,如果一行中有多个带逗号分隔的值,则可以使用以下代码:
with open('710_edited_capture.csv', 'r') as file:
file_content=file.readlines()
for line in file_content:
vals = line.strip().split(',')
print(vals)
您还可以将"vals"附加到空列表中。结果,您将获得一个列表,其中包含每行的值列表。
有点不清楚你想做什么,但如果你只想读取一个文件,将每个值与阈值进行比较,并在这里保留上限值 一个例子:
threshold=46.2
outlist=[]
with open('data.csv', 'r') as data:
for i in data:
if float(i)>threshold:
outlist.append(i)
然后您可以根据自己的需要进行调整...
感谢您的所有意见和建议,但它们并不是我所需要的。
但是,我已经应用了一种解决方法,尽管不可否认很笨拙。
我从原始文件创建了 5 个附加文件,每个文件中只有一个值。 由此,我现在可以去除空格和/n 并将它们本地保存为变量。 我不再需要阅读行
这些变量可以相互比较,并与阈值进行比较,以确定最佳选择。