我有这行内容来删除除空格以外的所有非字母数字字符
LocalDateTime
尽管如此,它仍然保留非英语字符。
例如,如果我有
re.sub(r'\W+', '', s)
我想得到输出:
re.sub(r'\W+', '', 'This is a sentence, and here are non-english 托利 苏 !!11')
答案 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,因此每个单词字符(包括非英语)和空格。
我希望这会在未来对某人有所帮助