0

Python は文字が壊れた文字列を返し続けます。

パイソン

test = re.sub('handle(.*?)', '<verse osisID="lol">\1</verse>', 'handle a bunch of random text here.')
print test

私が欲しいもの

<verse osisID="lol">a bunch of random text here.</verse>

私が得ているもの

<verse osisID="lol">*broken character*</verse>a bunch of random text here.
4

2 に答える 2

8

文字をエスケープするか、生の文字列\を使用する必要があります。r''

>>> re.sub('handle(.*?)', r'<verse osisID="lol">\1</verse>', 'handle a bunch of random text here.')
'<verse osisID="lol"></verse> a bunch of random text here.'

生の文字列リテラルがないr''場合、バックスラッシュはエスケープ コードとして解釈されます。バックスラッシュを 2 倍にすることもできます。

>>> '\1'
'\x01'
>>> '\\1'
'\\1'
>>> r'\1'
'\\1'
>>> print r'\1'
\1

handleそこの単語だけを置き換えることに注意してください.*?。パターンは少なくとも 0 文字に一致します。疑問符を削除すると、期待される出力と一致します。

>>> re.sub('handle(.*)', r'<verse osisID="lol">\1</verse>', 'handle a bunch of random text here.')
'<verse osisID="lol"> a bunch of random text here.</verse>'
于 2012-08-09T19:45:40.163 に答える