не работают, странные персонажи - PullRequest
0 голосов
/ 13 марта 2011
textfields="""Conjugation of suorittaa """ 
stry2= """Conjugation"""
stryc=re.compile(stry2, re.DOTALL)
print 'textfields=', textfields, '  stry2=', stry2
LtryM=re.search(stryc, textfields); print 'LtryM', LtryM 

Я не могу найти слово re в тексте "" "Спряжение" "" Спряжение suorittaa "" ". В конце я напечатал слово и строку. Оказалось, что вместо "" "Спряжения" "" я получил напечатанное слово "" "xxxConjugation" "", где xxx - странные символы.

Как я могу решить это. Я также пытался закодировать обе строки в 'utf-8'. Результат тот же. Эти странные символы появляются только перед словом, они не видны в файле скопий.

Ответы [ 3 ]

1 голос
/ 13 марта 2011

Ваша проблема не может быть воспроизведена на основе предоставленной вами информации:

>>> import re
>>> textfields="""Conjugation of suorittaa """
>>> stry2= """Conjugation"""
>>> stryc=re.compile(stry2, re.DOTALL)
>>> print 'textfields=', textfields, '  stry2=', stry2
textfields= Conjugation of suorittaa    stry2= Conjugation
>>> LtryM=re.search(stryc, textfields); print 'LtryM', LtryM
LtryM <_sre.SRE_Match object at 0x0195A870>
>>> LtryM.group(0)
'Conjugation'
>>> print repr(textfields)
'Conjugation of suorittaa '
>>> print repr(stry2)
'Conjugation'
>>>

Попробуйте воспроизвести ее самостоятельно, как описано выше, которую можно скопировать / вставить в SO и точно показывает, чтоЯ сделал и каковы были результаты.

[Python 2.7.1;Windows 7 32-битная]

0 голосов
/ 13 марта 2011

Отправленный код должен найти соответствие в порядке.Обратите внимание, что re.search возвращает MatchObject, который вы не должны распечатывать напрямую - вместо этого вы можете распечатать соответствующий текст:

print LtryM.group(0)

Это должно вывести «Сопряжение».

0 голосов
/ 13 марта 2011

AFAIK, search и match возвращают соответствующий объект, если у вас есть группа захвата. Чтобы получить ожидаемое поведение, используйте findall.

In [23]: textfields="""Conjugation of suorittaa """ 

In [24]: stry2= """Conjugation"""

In [25]: ls = re.findall(stry2 , textfields )

In [26]: ls
Out[26]: ['Conjugation']

Если это не ваш запрос, пожалуйста, объясните немного подробнее, что именно вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...