【问题标题】:How to remove words containing only numbers in python?如何在python中删除仅包含数字的单词?
【发布时间】:2016-10-13 11:56:14
【问题描述】:

我在 Python 中有一些由数字和字母组成的文本。像这样的:

s = "12 word word2"

从字符串 s 中,我想删除所有包含 only numbers

的单词

所以我希望结果是

s = "word word2"

这是我拥有的正则表达式,但它适用于字母,即它用空格替换每个字母。

re.sub('[\ 0-9\ ]+', ' ', line)

有人可以帮我告诉我哪里出了问题吗?另外,有没有比正则表达式更省时的方法?

谢谢!

【问题讨论】:

    标签: python regex string


    【解决方案1】:

    在这里使用正则表达式可能有点矫枉过正,具体取决于您是否需要保留空格:

    s = "12 word word2"
    s2 = ' '.join(word for word in s.split() if not word.isdigit())
    # 'word word2'
    

    【讨论】:

      【解决方案2】:

      你可以使用这个正则表达式:

      >>> s = "12 word word2"
      >>> print re.sub(r'\b[0-9]+\b\s*', '', s)
      word word2
      

      \b 用于单词边界,\s* 将删除数字单词后的 0 个或多个空格。

      【讨论】:

      • 感谢您的回答。可以修改正则表达式以删除所有标点符号/特殊符号,如下所示? re.sub(r'\b[!~`.,/]+\b\s*', '', s)
      • 当然可以使用:re.sub(r'\b[0-9]+\b\W*', '', s),因为\W 匹配空格或任何其他非单词字符。
      【解决方案3】:

      不使用任何外部库你可以做到:

      stringToFormat = "12 word word2"
      words = ""
      for word in stringToFormat.split(" "):
          try:
              int(word)
          except ValueError:
              words += "{} ".format(word)
      print(words)
      

      【讨论】:

        猜你喜欢
        • 2016-03-01
        • 2014-05-20
        • 1970-01-01
        • 2021-03-19
        • 1970-01-01
        • 1970-01-01
        • 2015-07-10
        • 1970-01-01
        • 2017-04-28
        相关资源
        最近更新 更多