我有这一行代码可以删除所有非字母数字字符,除了空格
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'
re.sub(r'[^A-Za-z0-9 ]+', '', s)
(编辑) 为了澄清:
[] 创建字符列表。
^ 否定列表。
A-Za-z 是英文字母表,
是空格。对于任何一个或多个这些字符(也就是说,任何不是A-Z、a-z或空格的字符),替换为空字符串。
替换为 \s
。 - Nir Levy[0-9A-Za-z ,.-]
。 - Nir Levy这可能不是对这个具体问题的答案,但我在研究中遇到了这个线程。
我想达到与问者相同的目标,但我想包含非英语字符,如:ä、ü、ß等。
根据问者的代码,空格也将被删除。
一个简单的解决方法是:
re.sub(r'[^ \w+]', '', string)
The ^ 符号表示选择除以下内容之外的所有内容。在这种情况下,就是 \w 符号,也就是每个单词字符(包括非英文字符)和空格。
我希望这能够帮助到未来的某个人。
我曾经遇到过完全相同的问题,唯一的区别是我无法导入任何东西或使用正则表达式。
为了解决我的问题,我创建了一个包含我想要保留的所有值的列表:
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'
虽然这不是最好的方法,但鉴于情况,这是一种快速简便的方法来完成工作。
注意: 你可以通过将 if item not in values
改为 if item in values
来替换在 values
列表中的已经存在的项目。
注意: 我不能使用字符串常量,因为必须导入 string
包才能使用它们。
祝你好运。
,
或!
,但是您有-
,您确切地想要保留什么? - ruohola