Python strip() and readlines()



我有一个我正在尝试运行的代码,它将比较 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 并将它们本地保存为变量。 我不再需要阅读行

这些变量可以相互比较,并与阈值进行比较,以确定最佳选择。

最新更新