【问题标题】:how can i delete certain words and numbers from a variable in python如何从python中的变量中删除某些单词和数字
【发布时间】:2021-01-13 03:19:48
【问题描述】:

我制作了一个脚本,采用了该系列的标题,但在每个标题中都有一个年份和“onlajn sa prevodom”。年份因系列而异。如何使用 python 删除年份和“onlajn sa prevodom”

naslov = "Tajkun (2020) onlajn sa prevodom"

【问题讨论】:

  • 请发布您的预期输出。
  • 使用naslov.split()[0]
  • naslov.partition(' ')[0]
  • @MayankPorwal 和 dawg,这在一般情况下不起作用,因为标题可以是多个单词。预期输出为"Tajkun",如果源字符串为"Avengers: the Endgame (2019) onlajn sa prevodom",则为"Avengers: the Endgame"。 (是的,OP 本可以提供更好的示例,但问题的描述相当准确。)
  • @Amadan 你可以用括号分割(。使用这个:naslov.split('(')[0]

标签: python python-3.x


【解决方案1】:
import re

naslov = "Tajkun (2020) onlajn sa prevodom"

re.sub("\([0-9]{4}\) onlajn sa prevodom", "", naslov)

更多关于re module

【讨论】:

    【解决方案2】:

    使用常规的表达方式。这就是它们的设计目的。

    import re
    title = "Tajkun (2020) onlajn sa prevodom"
    corrected_title = re.sub(r"\s*\(\d+\) onlajn sa prevodom", "", title)
    

    【讨论】:

      【解决方案3】:

      您最好的选择是正则表达式匹配。如果你很确定字符串会包含这个“(year) onlajn sa prevodom”模式,你可以用正则表达式写成

      pattern = r"\s\([0-9]+\) onlajn sa prevodom" 一步一步:

      \s 表示空格

      \([0-9]+\) 表示匹配两个括号之间的一个或多个数字。

      结尾的“onlajn sa prevodom”仅用于匹配,以确保 (xxxx) 之间的数字后跟短语。完整的这里是一个与您的示例相匹配的简短程序

      import re
      
      if __name__ == '__main__':
          expr = r"\s\([0-9]+\) onlajn sa prevodom"
          naslov1 = "Tajkun (2020) onlajn sa prevodom"
          naslov2 = "Tajkun (2019) onlajn sa prevodom"
          naslov3 = "Tajkun (102) onlajn sa prevodom"
          naslov4 = "Tajkun (1990) onlajn sa prevodom"
          print(re.split(expr, naslov1))
          print(re.split(expr, naslov2))
          print(re.split(expr, naslov3))
          print(re.split(expr, naslov4))
      

      输出:

      ['Tajkun', '']
      ['Tajkun', '']
      ['Tajkun', '']
      ['Tajkun', '']
      

      要获取标题,只需分配 re.split() 的输出

      my_title = re.split(expr, naslov1)[0]
      print(my_title)
      

      我强烈推荐学习正则表达式。这是一个很好的tutorial

      【讨论】:

        【解决方案4】:

        如果我能很好地理解您的期望,这可能就是您想要的,

        naslov = "Tajkun (2020) onlajn sa prevodom"
        print(naslov[:naslov.find('(')].strip())
        
        Tajkun
        

        这只有在每一行都包含'()'时才有效。

        【讨论】:

          猜你喜欢
          • 2015-07-12
          • 1970-01-01
          • 2022-01-24
          • 2022-08-18
          • 2020-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多