使用大于表达式来过滤文本文件行?

时间:2016-08-09 14:10:54

标签: python

我有一个包含多行的文本文件,想要查找哪些行的值大于85%。

'workdata worka worka1 size 84% total'
'workdata workb workb1 size 89% total'
'workdata workc workc1 size 63% total'
'workdata workd workd1 size 94% total'

有人可以告诉我如何在第五栏中获得85%或更多的句子吗?

2 个答案:

答案 0 :(得分:1)

您需要首先提取百分比,然后根据该值过滤行。

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]+%

如果位置固定(第五列),您可以这样重写extract_percent函数:

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

答案 1 :(得分:0)

如果您知道百分比将始终位于第5列,则只需拆分空格中的每一行,删除百分号,然后将其转换为浮点数。像这样:

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