Python 使用正则表达式从文本文件中获取数字

Python 使用正则表达式从文本文件中获取数字,python,regex,Python,Regex,我有一个文本文件,它的行格式如下: 1 12.345 12345.12345678 56.789 textextext re.findall(r' \d\d\.\d\d\d',<my_line>)[0] 使用python,我希望能够获取格式为nn.nnn的数字,但仅获取倒数第二列中的数字,即对于此行,我希望获取56.789(而不是12.345) 我知道我可以做一些事情,比如: 1 12.345 12345.12345678 56.789 texte

我有一个文本文件,它的行格式如下:

1   12.345   12345.12345678   56.789   textextext
re.findall(r' \d\d\.\d\d\d',<my_line>)[0]
使用python,我希望能够获取格式为nn.nnn的数字,但仅获取倒数第二列中的数字,即对于此行,我希望获取56.789(而不是12.345)

我知道我可以做一些事情,比如:

1   12.345   12345.12345678   56.789   textextext
re.findall(r' \d\d\.\d\d\d',<my_line>)[0]
re.findall(r'\d\d\.\d\d',)[0]

但我不知道如何确保我只获取两个相同格式的数字中的一个。

在匹配数字之前,您可以使用贪婪匹配:

>>> s = '1   12.345   12345.12345678   56.789   textextext'
>>> print re.findall(r'.*(\b\d+\.\d+)', s)[0]
56.789

正则表达式详细信息:

  • *
    贪婪,在下一次匹配之前匹配最长的匹配
  • \b
    表示单词边界
  • \d+\.\d+
    匹配浮点数

在匹配号码之前,您可以使用贪婪匹配:

>>> s = '1   12.345   12345.12345678   56.789   textextext'
>>> print re.findall(r'.*(\b\d+\.\d+)', s)[0]
56.789

正则表达式详细信息:

  • *
    贪婪,在下一次匹配之前匹配最长的匹配
  • \b
    表示单词边界
  • \d+\.\d+
    匹配浮点数

提取行上的最后一个模式意味着您需要
re.findall(r'your_pattern(?。*your_pattern)
。或者对于这种情况,更精确的是
re.findall(r')(?提取行上的最后一个模式意味着您需要
re.findall(r'your_模式(?)。*your_模式)
),或者对于这种情况,更精确的是
re.findall(r')(?