正则表达式unicode替换不起作用

时间:2012-06-04 13:17:38

标签: python regex unicode

我在python中有以下示例,它不起作用:

>>> replace = re.compile(ur'најавени', flags=re.IGNORECASE)

>>> docText = replace.sub("најавени1",docText)

>>> print docText

трендафилов во мвр се Најавени нови смени поврзани со безбедноста и борбата против организираниот криминал

>>> docText = replace.sub(u"најавени1",docText)

>>> print docText

трендафилов во мвр се Најавени нови смени поврзани со безбедноста и борбата против организираниот криминал

>>> docText = replace.sub(u"најавени1",docText,re.IGNORECASE)

>>> print docText

трендафилов во мвр се Најавени нови смени поврзани со безбедноста и борбата против организираниот криминал

任何提示?我只想在文本中替换字符串,它使用的是英语,但不是我的母语。

第二次尝试:

>>> docText = "трендафилов во мвр се Најавени нови смени поврзани со безбедноста и борбата против организираниот криминал"
>>> replace = re.compile(ur'Најавени', flags=re.IGNORECASE)
>>> docText = replace.sub(u"најавени1",docText,re.IGNORECASE)
>>> print docText
трендафилов во мвр се Најавени нови смени поврзани со безбедноста и борбата против организираниот криминал

1 个答案:

答案 0 :(得分:2)

您需要指定识别unicode的字符串和正则表达式,如下所示:

>>> import re
>>> replace = re.compile(ur'најавени', flags=re.IGNORECASE | re.UNICODE)
>>> docText = u"трендафилов во мвр се Најавени нови смени поврзани со безбедноста и борбата против организираниот криминал"
>>> print docText
трендафилов во мвр се Најавени нови смени поврзани со безбедноста и борбата против организираниот криминал
>>> docText = replace.sub(u"најавени1",docText)
>>> print docText
трендафилов во мвр се најавени1 нови смени поврзани со безбедноста и борбата против организираниот криминал