【问题标题】:how to print previous string after selecting specific string python选择特定字符串python后如何打印前一个字符串
【发布时间】:2016-05-28 12:44:58
【问题描述】:

我想查找出现在关键字之前的单词(由我指定和搜索)并打印出结果。我尝试了下面的代码,但它给了我之前的单词......

    str = "Phone has better display, good speaker. Phone has average display"
    p1 = re.search(r"(display>=?)(.*)", str)
    if p1 is None:
       return None
    return p1.groups()

这段代码给了我

    , good speaker. Phone has average display

但我只想要

    better,average

【问题讨论】:

    标签: python regex search keyword matching


    【解决方案1】:

    您可以使用积极的前瞻,用findall 代替search

    >>> p = re.compile(r'(\w+)\s+(?=display)')
    >>> p.findall(str)
    ['better', 'average']
    

    【讨论】:

    • 是的,它有效。 r'(\w+)\s+(?=display) & r'(\w+)\s*(?=display) 有什么区别
    • \s+: 一个或多个空白字符,\s* 零个或多个空白字符。所以第一个不会匹配neodisplay(因为display之前没有空格)而第二个会。
    【解决方案2】:

    您可以使用积极的前瞻断言?=

    import re
    
    str = "Phone has better display, good speaker. Phone has average display"
    p1 = re.findall(r"(\w+)\s*(?=display)", str)
    print(p1)
    # ['better', 'average']
    

    \w 表示单词字符。

    【讨论】:

      猜你喜欢
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2021-06-16
      • 2020-01-02
      相关资源
      最近更新 更多