如何在Python中替换unicode中文字符?

时间:2017-05-29 02:26:30

标签: python unicode

说我有一个像这样的字符串

example = u"这是一段很蛋疼的中文"

我想用替换egg,我该如何完成?

似乎example.replace()没用。 我尝试使用正则表达式,使用re.match(u"蛋", "")返回无。

我搜索了很多,似乎我应该使用类似.decode的方法,但它仍然不起作用,即使example.replace(u"\u86CB", "egg")也没用。

那么有办法处理汉字吗?

2 个答案:

答案 0 :(得分:2)

您应该在Python3中获得如下输出。

>>> import re
>>> example = u"这是一段很蛋疼的中文"
>>> re.search(u'蛋',example)
<_sre.SRE_Match object; span=(5, 6), match='蛋'>

>>> example.replace('蛋','egg')
'这是一段很egg疼的中文'
>>> re.sub('蛋','egg',example)
'这是一段很egg疼的中文'

>>> example.replace(u"\u86CB", "egg")
'这是一段很egg疼的中文'
>>> re.match('.*蛋',example)
<_sre.SRE_Match object; span=(0, 6), match='这是一段很蛋'>

re.match会尝试匹配开头的字符串,因此在您的情况下会返回None

答案 1 :(得分:1)

您可以在Python2中执行以下操作:

编辑:使用unicode literals添加具有编码规范的正确编码源文件将解决此问题。

#!/usr/local/bin/python
# -*- coding: utf-8 -*-

example = u"这是一段很蛋疼的中文"
print example.replace(u"这", u"egg")
# Within Python3
# print(example.replace("这", 'egg'))

输出:

egg是一段很蛋疼的中文