【问题标题】:Remove all special characters from text except for "\n" and "/"从文本中删除除“\n”和“/”之外的所有特殊字符
【发布时间】:2019-05-24 00:34:45
【问题描述】:

从这篇文章中,我发现了如何从文本中删除除空格和字母数字之外的所有内容:Python: Strip everything but spaces and alphanumeric

这样:

re.sub(r'([^\s\w]|_)+', '', document)

我基本上想删除所有特殊字符。

但是,现在我想做同样的事情(即删除所有特殊字符),但不删除以下特殊字符:

  1. \n
  2. /

我该怎么做?

【问题讨论】:

    标签: python nlp


    【解决方案1】:

    我们可以尝试在不使用严格的字符类的情况下重写您的模式:

    document = "Hello!@#$/ World!"
    output = re.sub(r'[^ \nA-Za-z0-9/]+', '', document)
    print(output)
    
    Hello/ World
    

    这表示删除任何不是字母数字、空格、换行符或正斜杠的字符。

    【讨论】:

    • 问题是:'Motörhead' 是否应该是字母数字字符串?
    • @Matthias Radiöhead 怎么样?反正从不喜欢他们的音乐。
    • 谢谢,这看起来不错。顺便说一句,如果您的 cmets 与此有关,我不知道,但我想知道诸如 ö 之类的字母是否被视为特殊字符,因此它们将被删除?如果是,那么这是一个问题 - 我可能会为此编写或找到一个单独的问题。
    • @PoeteMaudit 是的,重音字符将被删除,但您也可以将它们包含在字符类中。如您所见,这里的问题是说[^\w] 会自动排除/
    • 好的,是的,所以我可能不得不写或找到一个单独的问题,因为我想保留所有重音字母。
    【解决方案2】:

    我可能缺少完整的用例,但您可以在没有 regex 的情况下执行此操作:

    s = "test\r\n\\ this\n"
    s = ''.join(char for char in s if char.isalnum() or char in {'\\', '\n', ' '})
    print(s)
    

    .isalnum() 处理大多数字母数字字符,包括 unicode。

    【讨论】:

      猜你喜欢
      • 2013-07-22
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      相关资源
      最近更新 更多