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

Python 如何在字符串匹配后查找随机放置的数值,python,regex,python-3.x,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 这里我想要的输出是使用regex和python打印“weight=1.10公斤” 我制作了以下代码来匹配上面文本文件中的KILO。我的问题是,在找到字符串“KILO”后,如何匹配数字1.10?请

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

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
这里我想要的输出是使用regex和python打印“weight=1.10公斤”

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

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

2) 1.10始终出现在基洛之后和新行上


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

下面的循环遍历文件,直到它看到一行包含
KILO
KG
。它尝试将该行之后的每一行转换为浮点,并在成功时返回该浮点

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

KILO
KG
的搜索非常基本,并且容易出现误报。如果您知道它将始终与其他特征一起出现(例如,用括号括起来),您可能希望在搜索中包含这些特征

下面的循环遍历文件,直到它看到一行包含
KILO
KG
。它尝试将该行之后的每一行转换为浮点,并在成功时返回该浮点

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

KILO
KG
的搜索非常基本,并且容易出现误报。如果您知道它将始终与其他特征一起出现(例如,用括号括起来),您可能希望在搜索中包含这些特征

是的,这是一个数字行在基洛或千克之后(我编辑了这个问题)。我建议将标题改为“如何在字符串匹配后找到随机放置的数值”。是的,它是在公斤或公斤之后的一条数字线(我编辑了这个问题),我建议将标题改为“如何在字符串匹配后找到随机放置的数值”。该值是否始终保证在出现后是唯一的数字行?我编辑了标题,是的,该值始终保证是数字