如何只保留字母数字和空格,同时忽略非 ASCII?

新手上路,请多包涵

我有这一行删除除空格外的所有非字母数字字符

re.sub(r'\W+', '', s)

虽然,它仍然保留非英文字符。

例如,如果我有

re.sub(r'\W+', '', 'This is a sentence, and here are non-english 托利 苏 !!11')

我想获得输出:

 > 'This is a sentence and here are non-english  11'

原文由 Filipe Aleixo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答
re.sub(r'[^A-Za-z0-9 ]+', '', s)

(编辑)澄清: [] 创建一个字符列表。 ^ 否定列表。 A-Za-z 是英文字母和 “ 是空间。对于其中的任何一个或多个(即不是 AZ、az 或空格的任何内容)替换为空字符串。

原文由 Nir Levy 发布,翻译遵循 CC BY-SA 4.0 许可协议

这可能不是这个具体问题的答案,但我在研究过程中遇到了这个话题。

我想达到与提问者相同的目标,但我想包括非英语字符,例如:ä,ü,ß, …

提问者代码的工作方式,空格也将被删除。

一个简单的解决方法如下:

 re.sub(r'[^ \w+]', '', string)

^ 表示除了以下内容之外的所有内容都被选中。在这种情况下 \w,因此每个单词字符(包括非英语)和空格。

我希望这会在将来帮助某人

原文由 Tilman Böckenförde 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题