Скажи у меня есть такая строка

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

Я хочу заменить на egg, как мне это закончить?

Кажется, example.replace() бесполезен. И я попробовал регулярное выражение, используя re.match(u"蛋", "") ничего не возвращает.

Я много искал, кажется, я должен использовать метод, подобный .decode, но все равно он не работает, даже example.replace(u"\u86CB", "egg") бесполезен.

Так есть ли способ обрабатывать китайские иероглифы?

1
JiangFeng 29 Май 2017 в 05:26

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 в вашем случае.

2
Aaron 29 Май 2017 в 02:38

Вы можете сделать что-то подобное в 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是一段很蛋疼的中文
1
Chiheb Nexus 30 Май 2017 в 02:12