Python-仅保留字母数字和空格,并忽略非ASCII

时间:2019-04-29 11:05:56

标签: python regex

我有这行内容来删除除空格以外的所有非字母数字字符

LocalDateTime

尽管如此,它仍然保留非英语字符。

例如,如果我有

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

我想得到输出:

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

3 个答案:

答案 0 :(得分:5)

re.sub(r'[^A-Za-z0-9 ]+', '', s)

(编辑)进行说明: []创建一个字符列表。 ^否定列表。 A-Za-z是英文字母,是空格。对于其中的任何一个或多个(即,不是A-Z,a-z或空格的任何内容),请替换为空字符串。

答案 1 :(得分:0)

我曾经遇到过这个确切的问题,唯一的区别是我无法导入任何东西或使用正则表达式。

为解决我的问题,我创建了一个列表,其中包含我想保留的所有值:

values = list("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ")

然后,我创建了一个函数,该函数将遍历字符串中的每个项目,如果它不在values列表中,它将从字符串中删除(替换)它:

def remover(my_string = ""):
  for item in my_string:
    if item not in values:
      my_string = my_string.replace(item, "")
  return my_string

例如,以下代码:

print(remover("H!e£l$l%o^ W&o*r(l)d!:)"))

应输出:

'Hello World'

虽然这不是执行此操作的最佳方法,但是在特定情况下,这是完成工作的快速简便的方法。

注意::您可以通过将values更改为{来替换if item not in values列表中 的项目{1}}。

注意:不允许我使用string constants,因为必须导入if item in values软件包才能使用它们。

祝你好运。

答案 2 :(得分:0)

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

我想达到与提问者相同的目标,但我想包含非英文字符,例如:ä、ü、ß、...

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

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

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

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

我希望这会在未来对某人有所帮助