【问题标题】:Finding a word after a specific word in Python using regex from text file [duplicate]使用文本文件中的正则表达式在Python中查找特定单词之后的单词[重复]
【发布时间】:2018-09-12 06:37:42
【问题描述】:

我对正则表达式非常陌生,我需要从文本文件中读取并在特定单词 + 字符之后找到一个单词。比如文本文件的内容是:

现在的天气:温和-晴天34 明天天气:多云

我想在从文本文档中搜索关键字"Weather now" 后提取"Mildly-sunny34"。我想确保除了单词"Mildly-sunny34" 之外,我也不会得到":"" " 空格。

非常感谢任何有关解释的帮助。谢谢!

【问题讨论】:

  • 它会帮助你regex101.com/r/dxds0B/1
  • 我不认为这个问题与stackoverflow.com/questions/12572362/… 重复,原因有二: (b) 这个问题是专门询问如何用正则表达式完成任务;该问题只有两个答案使用了正则表达式,并且他们以一种不适用于该问题的方式使用它们。

标签: python regex python-3.x


【解决方案1】:

这样就可以了:

import re

# Open the file for reading
with open('file.txt') as fd:

    # Iterate over the lines
    for line in fd:

        # Capture one-or-more characters of non-whitespace after the initial match
        match = re.search(r'Weather now : (\S+)', line)

        # Did we find a match?
        if match:
            # Yes, process it
            weather = match.group(1)
            print('weather: {}'.format(weather))

由于您捕获的是由空格分隔的非空格,因此您可以使用\S+

  • \S 是非空格——与 \s 相反,后者是空格
  • + 表示前面的一个或多个字符或字符类

对于捕获组,组 0 对应于整个正则表达式,捕获的子组按顺序编入索引。由于我们只有一个子组,我们需要第 1 组。

运行上述:

$ python extract.py 
weather: Mildly-sunny34

【讨论】:

  • 嗨,是的!谢谢,它适用于字符串。但是,当我尝试使用文本文件中的文本时出现错误(TypeError:预期的字符串或类似字节的对象),不知道为什么?
  • 我将其更新为从文件中读取。
  • 非常感谢,今天学到了新东西:)
  • 欢迎您。如果您认为这可以回答您的问题,请单击左侧的复选标记将其关闭。谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-08-02
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-14
  • 1970-01-01
相关资源
最近更新 更多