代码之家  ›  专栏  ›  技术社区  ›  serengeti

使用多个分隔符和非罗马字符拆分Python字符串[重复]

  •  2
  • serengeti  · 技术社区  · 6 年前

    import re
    
    title = "Nad Ziemią / Above Ground – test - filmy i seriale"
    
    if title.find('/') >= 0:
        original_title = (re.split('[-/()]', title)[1])
    
    print(original_title)
    

    其结果是:

    Above Ground - test 
    

    Above Ground
    

    3 回复  |  直到 6 年前
        1
  •  1
  •   benvc    6 年前

    重要提示:下面的代码是用Python3编写的,但是对于Python2.7(或更早的版本),您需要处理默认编码中的差异。看到了吗 Unicode HOWTO: Unicode Literals in Python Source Code

    比一开始看起来要复杂一些,因为字符串中有非罗马字符,第一个破折号和第二个破折号实际上不是同一个字符(第一个破折号是 en dash ). 如果你首先使用正则表达式,你实际上可以得到你想要的结果 encode 字符串,然后在短划线代码上拆分,然后在正斜杠上拆分第一个结果,然后对结果进行解码。

    title = "Nad Ziemią / Above Ground – test - filmy i seriale"
    
    title.encode().split(b'\xe2\x80\x93')[0].split(b'/')[1].decode()
    
    # OUTPUT
    # Above Ground
    
        2
  •  2
  •   Sven Harris    6 年前

    import re
    
    title = "Nad Ziemią / Above Ground – test - filmy i seriale"
    
    if title.find('/') >= 0:
        original_title = (re.split('[–\-/()]', title)[1])
    
    
    print(original_title)
    

    如果有人能猜出这个角色是什么,就可以得到加分。

        3
  •  2
  •   Jones1220    6 年前

    here :)

    import re
    
    title = "Nad Ziemią / Above Ground – test - filmy i seriale"
    
    if title.find('/') >= 0:
        original_title = re.search('(?<=[-/()])[ \w]+', title)
    
    print(original_title.group(0))
    

    输出:

    Above Ground