中文字符的特殊字符,未在python字符串中替换

时间:2015-02-07 18:16:51

标签: python regex chinese-locale

我似乎无法用')'或'''代替其他字符串中的错误。 ')'和'('是特殊字符。这里有两个字符串“sample(志信达).mbox”和“sample#宋安兴.mbox”。如果我用re替换字符,中文字符也会被替换。这是python中的代码:

# -*- coding: utf-8 -*-
import re
source1='sample(志信达).mbox'
source2='sample#宋安兴.mbox'
newname1=re.sub(r'[\(\);)(]','-',source1)
newname2=re.sub(r'[\(\);)(]','-',source2)
print source1,newname1
print source2,newname2

结果如下:

sample(志信达).mbox sample---志信达---.mbox
sample#宋安兴.mbox sample#宋?-兴.mbox

请注意,其中一个字符替换为“? - ”

1 个答案:

答案 0 :(得分:1)

你应该使用unicode文字(见https://docs.python.org/2/howto/unicode.html#unicode-literals-in-python-source-code):

# -*- coding: utf-8 -*-
import re
source1 = u'sample(志信达).mbox'
source2 = u'sample#宋安兴.mbox'
newname1 = re.sub(ur'[\(\);)(]','-',source1)
newname2 = re.sub(ur'[\(\);)(]','-',source2)
print source1,newname1
print source2,newname2

结果:

sample(志信达).mbox sample-志信达-.mbox
sample#宋安兴.mbox sample#宋安兴.mbox

另外,不要忘记将您的.py文件保存为UTF-8(您的IDE可能会自动执行此操作,或者您可能必须根据您使用的文本编辑器手动更改编码)。