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')(?