【问题标题】:How can I get a substring between 2 another substrings in Python [duplicate]python - 如何在Python中的两个另一个子字符串之间获取一个子字符串[重复]
【发布时间】:2020-09-08 04:47:56
【问题描述】:

如何获取两个子字符串之间的内容? 例如在"Hello, I have a very expensive car"我想找到之间的内容 "Hello, I have""car",不管它是什么。 如何找到两个字符串之间的子字符串?

【问题讨论】:

    标签: python string substring


    【解决方案1】:

    正则表达式的救援:

    import re
    
    text = "Hello, I have a very expensive car"
    
    pattern = re.compile(r'(?P<start>Hello, I have)(?P<middle>.+?)(?P<end>car)')
    
    match = pattern.search(text)
    if match:
        print(match.group('start'))
        print(match.group('middle'))
        print(match.group('end'))
    

    哪个产量(空格是有意的):

    Hello, I have
     a very expensive 
    car
    

    a demo on regex101.com


    要拥有可变文本,您可以使用 f 字符串,如下所示:
    myVariable = "Hello, I have"
    pattern = re.compile(rf'(?P<start>{myVariable})(?P<middle>.+?)(?P<end>car)')
    

    【讨论】:

    • 我怎样才能将它与变量一起使用,例如 (?PmyVariable) ?
    • @alondavidi:更新了答案,使用 f-strings。
    【解决方案2】:

    你可以试试这个:-

    s = 'Hello, I have a very expensive car'
    s = s.split(' ')
    
    print(' '.join(s[s.index('have')+1:s.index('car')]))
    

    输出:-

    'a very expensive'
    

    【讨论】:

    • 没关系,但如果我有一个大字符串怎么办?
    【解决方案3】:

    尝试 Python 的“re”模块用于正则表达式:

    import re
    
    my_string = 'Hello, I have a very expensive car'
    res = re.search('Hello, I have(.*)car', my_string)
    print(res.group(1))
    

    【讨论】:

      【解决方案4】:

      如果周围没有其他文字,您可以删除 2 个字符串

      value = "Hello, I have a very expensive car"
      res = re.sub("(Hello, I have|car)", "", value).strip()
      print(res) # a very expensive
      

      【讨论】:

        猜你喜欢
        • 2018-11-21
        • 2015-06-24
        • 2015-05-12
        • 2020-03-23
        • 1970-01-01
        • 1970-01-01
        • 2019-12-20
        • 1970-01-01
        • 2014-12-23
        相关资源
        最近更新 更多