如何在字符串匹配后找到随机放置的数值

时间:2018-12-21 14:14:51

标签: python regex python-3.x

我有一个文本文件,如下所示:

GROSS WE GHT
MARKS AND NUMBERS:
PCS:
(KILO):
POW- 40162463
PAF. 128993.1
BOM
1 USTER QUANTUM 3
1.10
VIA MUMBAI
AIRPORT/INDIA
CO210044158

在这里,我想要的输出使用正则表达式和python打印“ weight = 1.10 Kilos”。

import re    
with open('file_new1.txt') as fd:    
for line in fd:    
    match = re.search(r'KILO', line)    
    if match:                
        print('found')

我在上面的文本文件中做了以下代码来匹配KILO。我的问题是找到字符串“ KILO”后如何匹配数字1.10?请注意:

1)1.10是样本权重,也可以是2322.00或其他整数值

2)1.10总是出现在KILO之后并换行

3)字符串的值可以为KILO或KG

1 个答案:

答案 0 :(得分:3)

以下内容循环遍历文件,直到看到包含KILOKG的行。它尝试将那一行之后的每一行都转换为浮点数,并在成功后返回该浮点数

def get_weight(fp):
    next(line for line in fp if 'KILO' in line or 'KG' in line)
    for line in fp:
        try:
            return float(line)
        except ValueError:
            continue
    raise ValueError("No numeric line after 'KILO'")


with open('file_new1.txt') as fd:
    print(get_weight(fd))
    # 1.1

KILOKG的搜索是非常基本的,并且容易产生误报。如果您知道它总是带有其他特征(例如,用括号括起来),则可能需要在搜索中包括这些特征。