Regex python字符串仅替换保留非英语字母的特殊字符
如何仅从字符串中删除特殊字符,而不删除外语字符。当我尝试下面的代码时,它会删除特殊字符和非英语字母。但我只想删除特殊字符(出现在普通英语句子中的特殊字符) 上面的代码导致Regex python字符串仅替换保留非英语字母的特殊字符,regex,pandas,string,dataframe,python-3.8,Regex,Pandas,String,Dataframe,Python 3.8,如何仅从字符串中删除特殊字符,而不删除外语字符。当我尝试下面的代码时,它会删除特殊字符和非英语字母。但我只想删除特殊字符(出现在普通英语句子中的特殊字符) 上面的代码导致 0 A 1 B 2 C 3 D 4 E 5 F 6 ds 7 G 8 dsds 9 Endstrisi Name: name, dt
0 A
1 B
2 C
3 D
4 E
5 F
6 ds
7 G
8 dsds
9 Endstrisi
Name: name, dtype: object
0 A
1 B
2 C
3 D
4 E
5 F
6 ds
7 G
8 dsds
9 Endüstrisi
Name: name, dtype: object
但我想要的是
上面的代码导致
0 A
1 B
2 C
3 D
4 E
5 F
6 ds
7 G
8 dsds
9 Endstrisi
Name: name, dtype: object
0 A
1 B
2 C
3 D
4 E
5 F
6 ds
7 G
8 dsds
9 Endüstrisi
Name: name, dtype: object
你可以用
df['name']=df['name'].str.replace(r'[^\w\s]|",'',regex=True)
在Python 3中,默认情况下,所有正则表达式速记字符类(如\w
,\d
,\s
)都支持Unicode,因为默认情况下,re.U
(re.Unicode
)标志处于启用状态。因此,如果在求反字符类中使用\w
构造,它将匹配除任何Unicode字母、数字和\u
以外的所有字符
由于您不希望匹配空格,\s
被添加到否定字符类中
下划线不能包含在否定字符类中(因为它将不匹配),您需要一个替代项来匹配。
因此,模式匹配
-除Unicode字母、数字、空格和[^\w\s]
\uuuu
-或|
-下划线。
df['name'].str.replace(r'[^\w\s]|",'',regex=True)
我的印象是\w
只匹配英文字母和数字。不,在Python 3中,regex速记字符类默认支持Unicode,默认情况下,re.U
标志处于启用状态。