badc0re
badc0re

Reputation: 3533

Regular expression unicode replace not working

I have the following example in python, and it's not working:

>>> 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

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

Any hints? I just want to make a replace of a string in text, it's working in english but not in my native language.

Second attempt:

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

Upvotes: 1

Views: 108

Answers (1)

OmnipotentEntity
OmnipotentEntity

Reputation: 17131

You need to specify unicode aware strings and regular expressions like so:

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

Upvotes: 2

Related Questions