我有一个大的txt文件,我想在其中找到一组特定的字符串并提取其后面的数字。例如:
26.08.15 14:52:04 Pressure 1.02 Temperature 32.5 NOb 10993 VB 28772
.... <other stuff>
26.08.15 14:53:06 Pressure 1.03 Temperature 31.6 NOb 10993 VB 28008
.... <other stuff>
等
我希望能够找到String = Temperature并提取后面的数值。我见过一些例子告诉我字符串是否存在,但没有任何东西可以告诉我它在哪里或如何索引它后面的信息。这是可以在Python中完成的吗?
答案 0 :(得分:2)
您可以使用正则表达式组匹配
import re
with open("example.txt") as f:
for line in f:
m = re.match(".* Temperature (.*?) .*", line)
if m:
try:
number = float(m.group(1))
print(number)
except ValueError:
pass # could print an error here because a number wasn't found in the expected place
答案 1 :(得分:2)
我讨厌正则表达式,所以这里是纯python解决方案。
lines = "26.08.15 14:52:04 Pressure 1.02 Temperature 32.5 NOb 10993 VB 28772 .... 26.08.15 14:53:06 Pressure 1.03 Temperature 31.6 NOb 10993 VB 28008 ...."
lines = lines.split()
for n, word in enumerate(lines):
if word in ['Temperature', 'Pressure']:
print(word, lines[n+1])
答案 2 :(得分:0)
这可以通过逐字手动读取文件或使用python的正则表达式来实现。在我看来,使用正则表达式可以在不损失可读性的情况下实现更简洁的代码,因此我将专注于该解决方案。
从re
模块(https://docs.python.org/3/library/re.html)的python文档:
(?<=...)
匹配,如果字符串中的当前位置前面是以当前位置结束的...
匹配。此示例查找连字符后面的单词:
m = re.search('(?<=-)\w+', 'spam-egg') m.group(0)
在您的示例中,您希望在每次出现&#34;温度&#34;之后进行搜索。对于任意数量的数字\d+
,可选的是小数点\.?
和更多数字\d+?
。 re.findall()
功能可能很有用。