繁体   English   中英

python字符串中未替换汉字的特殊字符

[英]special character with chinese characters not substituted in python string

我似乎不能在不引起其他字符串错误的情况下替换“)”或“(”)。 “”和“(”是特殊字符。 这是两个字符串“ 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

注意,其中一个字符被替换为'?-'

您应该使用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可能会自动执行此操作,或者您可能必须手动更改编码,具体取决于所使用的文本编辑器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM