Python 是否使用大于表达式筛选文本文件行?

Python 是否使用大于表达式筛选文本文件行?,python,Python,我有一个包含多行的文本文件,希望找到哪些行的值大于85% 'workdata worka worka1大小总计84% “workdata workb workb1大小总计89% “workdata workc workc1大小总计63% “工作数据工作1大小总计94% 有人能告诉我如何才能得到第五列中85%或85%以上的句子吗?您需要先提取百分比,然后根据百分比筛选行 import re def extract_percent(line): # doing extraction

我有一个包含多行的文本文件,希望找到哪些行的值大于85%

'workdata worka worka1大小总计84%
“workdata workb workb1大小总计89%
“workdata workc workc1大小总计63%
“工作数据工作1大小总计94%

有人能告诉我如何才能得到第五列中85%或85%以上的句子吗?

您需要先提取百分比,然后根据百分比筛选行

import re

def extract_percent(line):
    # doing extraction
    try:
        return int(re.findall('[0-9]+%', line)[0][:-1])
    except:
        return 0

print [line for line in lines if extract_percent(line) > 85]
如果未找到任何内容,则返回0。 否则返回
%
之前的数字。 如果字符串中有几个百分比数字,则返回第一个

如果百分比可以浮动,可能会变得有点棘手, 但也不难。只需使用正则表达式
[0-9]+%

如果位置是固定的(第五列),可以通过以下方式重写
提取百分比
函数:

def extract_percent(line):
    try:
        return int(line.split()[4][:-1])
    except:
        return 0

如果您知道百分比总是在第5列,那么只需在空格中拆分每行,删除百分号,并将其转换为浮点。大概是这样的:

lines = open("fileName", "r").read().splitlines()
for row in lines:
    if float(row.split()[4].replace("%",""))>85:
        print(row)

您在尝试中遇到了什么困难?您需要编写一个正则表达式来提取数字。我建议查看以下资源:,。使用正则表达式(via)提取
%
前面的数字。把它们转换成整数,看看它是否大于85。你只是在鼓励像这样糟糕的问题……而且你的缩进不符合要求,所以这算不上一个很好的例子。@martineau:谢谢你的提示!缩进现在是固定的。百分比始终在同一位置,因此:-1将起作用。它在第一个匹配项处停止,返回84。我想我可能没有在正确的位置读取文件,或者没有在其中循环…@mustang:使用正则表达式更健壮,并且由于输入的微小变化而不太可能中断。