【问题标题】:Python regex get multiple lines after specific wordPython 正则表达式在特定单词后获取多行
【发布时间】:2022-07-19 15:18:16
【问题描述】:

字符串存储在变量文本中。 当我做 print(text) 我得到输出:

SHIP TO
Flensburg House, MMDA Colony,
Arumbakkam,Chennai, Tamil Nadu,

我需要获取文本:

Flensburg House, MMDA Colony,
Arumbakkam,Chennai, Tamil Nadu,

这是我尝试过的:

shipto=[]
shipto_re=re.compile(r"SHIP TO((?:.*\n){1,3})")
for line in text.split():
      if shipto_re.match(line):
        shipto.append(line)

但是,这并没有给我一个匹配,我知道正则表达式有效,所以问题肯定在于如何遍历文本变量。

【问题讨论】:

    标签: python regex loops string-matching


    【解决方案1】:

    您正在使用跨行匹配的正则表达式,但您使用空格拆分字符串并针对正则表达式测试每个拆分“令牌”。

    你需要使用

    import re
    text = r'''SHIP TO
    Flensburg House, MMDA Colony,
    Arumbakkam,Chennai, Tamil Nadu,'''
    shipto_re=re.compile(r"SHIP TO((?:.*\n){1,3})")
    shipto = [x.strip() for x in shipto_re.findall(text)]
    print(shipto)
    # => ['Flensburg House, MMDA Colony,']
    

    请参阅Python demo

    这里,Pattern.findall 用于从匹配项中提取第 1 组值,并且每个匹配项都使用str.strip() 去除任何前导和尾随空格。

    【讨论】:

      猜你喜欢
      • 2021-04-20
      • 2023-03-19
      • 2013-06-10
      • 2022-07-14
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 2022-08-02
      • 1970-01-01
      相关资源
      最近更新 更多