Python:没有使用正则表达式的结果

2024-10-04 15:33:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含许多行的文本文件,例如:

Total:4CASES      gross weight(KG):76          net weight(KG):60          volume(CBM):0.99
Total:203CASES    gross weight(KG):16695.88    net weight(KG):15329.37    volume(CBM):99.29
Total:198CASES    gross weight(KG):14892.25    net weight(KG):13347.77    volume(CBM):105.14
Total:231CASES    gross weight(KG):18730.56    net weight(KG):16825.96    volume(CBM):112.77

我试着提取数字,得到箱子的总数,重量和体积。你知道吗

对于total cases,我在文件的每一行使用以下表达式:

matchTotalCases = re.search(r'Total:\w*CASES\s', line)

当我去matchTotalCases.group()它给我Total:4CASES作为第一行。这对我来说没关系,但对于毛重我正在努力:

matchGrossWeight = re.search(r'^gross\sweight(KG):\w*[.]?[\w]*$', line)

但它什么也不回。。。你知道吗

那么,如何调整regex以得到类似gross weight(KG):76或者更好的结果,直接得到76?你知道吗

谢谢你的支持。你知道吗


Tags: researchnetline数字total文本文件weight
3条回答

正则表达式有几个问题。查看正则表达式语法文档:https://docs.python.org/2/library/re.html#regular-expression-syntax

  1. matchGrossWeight的正则表达式以字符^开始,该字符将仅匹配字符串开头的,或在每行开头与^{}匹配。

  2. 您需要转义括号(())才能将它们用作正则表达式中的文字字符。

  3. 你用小数点匹配数字的方法相当笨拙。您可以简单地使用\.来匹配文字.字符。

在regexpr中,将\w*替换为(\d+)

  1. 删除^$,因为它们分别用于行的开始和结束。

  2. 逃逸()

  3. 正确处理数字。

下面是一个有效的例子:

matchGrossWeight = re.search(r'gross\sweight\(KG\):[0-9]+(\.[0-9]+)?', line)

相关问题 更多 >

    热门问题