Python strip()和readlines()

时间:2017-07-26 18:34:39

标签: python-2.7 strip readlines

我有一个我想要运行的代码,它会将csv文件中的值与我在py文件中设置的阈值进行比较。

我的csv文件的输出类似于以下,但有1030行

<table class="table table-bordered table-condensed">
 <tr>
  <td class="col-md-6">one</td>
  <td class="col-md-4">two</td>
  <td class="col-md-2">three</td>
 </tr>
 <tr>
  <td class="col-md-6">one</td>
  <td class="col-md-4">twoooooooo00</td>
  <td class="col-md-2">three</td>
 </tr>
</table>

<table class="table table-bordered table-condensed">
<tr>
 <td class="col-md-6">one</td>
 <td class="col-md-4">two</td>
 <td class="col-md-2">three</td>
</tr>
<tr>
 <td class="col-md-6">one</td>
 <td class="col-md-4">two</td>
 <td class="col-md-2">three</td>
</tr>
</table>

注意:值之间没有行,但前面只有一个空格。

我的第一次尝试是使用此代码:

 -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

3 个答案:

答案 0 :(得分:1)

您可以使用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”附加到空白列表中。结果,您将获得一个包含每行值列表的列表。

答案 1 :(得分:0)

有点不清楚你想要做什么,但是如果你只是想读取一个文件,将每个值与一个阈值进行比较,并保持上面的值为例:

threshold=46.2
outlist=[]
with open('data.csv', 'r') as data:
    for i in data: 
        if float(i)>threshold: 
             outlist.append(i)

然后你可以根据自己的需要调整它......

答案 2 :(得分:0)

感谢所有的评论和建议,但它们并不是我所需要的。

然而,我已经应用了一种解决方法,尽管它很笨拙。

我已经从原始文件中创建了5个附加文件,每个文件只有一个值。从这里我可以剥离空间和/ n并将它们作为变量保存在本地。我不再需要阅读线

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