代码之家  ›  专栏  ›  技术社区  ›  Ajinkya

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

  •  0
  • Ajinkya  · 技术社区  · 7 年前

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

    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公斤”。

    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?请注意:

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

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

    1 回复  |  直到 7 年前
        1
  •  3
  •   Patrick Haugh    7 年前

    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
    

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