【问题标题】:Python Get Text in Quotes After PatternPython在模式后获取引号中的文本
【发布时间】:2020-05-12 07:22:21
【问题描述】:

我想在模式“名称”出现后获取引号中的文本。

一个示例字符串是: info = "name: joe", "name: jerry", "name: kate"

这是我正在做的事情:

import re

string = 'info = "name: joe", "name: jerry", "name: kate"'
array = re.findall(r'"(.*?)"', string)
for x in array:
       x = x.replace(" ","") #remove spaces because there might be space before colon occasionally 
       print(x.split("name:")[1])

输出打印:

joe
jerry
kate

我只是想知道是否有任何更简单的方法可以做到这一点并返回与我所做的相同的输出。

【问题讨论】:

标签: python python-re


【解决方案1】:

您可以在正则表达式中嵌入name: 模式,通过\s* 考虑冒号前的偶尔空格,并匹配冒号后的一个或多个空格和实际名称(您从中拆分的位置):

re.findall(r'"name\s*:\s+(.*?)"', string)
# ['joe', 'jerry', 'kate']

【讨论】:

    【解决方案2】:

    试试:

    res=list(re.findall(r'\"name: ([^\"]+)"', string))
    
    print(res)
    

    2 重要的事情 - 你只提取一个组,因此方括号,你定义一个名称为一个或多个字符的集合,不是双引号 ",因为正则表达式默认是贪婪的(即匹配只有最长的匹配)。

    输出:

    ['joe', 'jerry', 'kate']
    

    【讨论】:

      猜你喜欢
      • 2012-01-27
      • 1970-01-01
      • 2014-07-21
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多