2

私はユニコード文字列を持っています

u"\uC3A9\xe9"
、PCRE対応の正規表現で変換したい
"\x{c3a9}\x{e9}​​"
パイソンで。

すでにそれを行っているモジュールはありますか?

4

1 に答える 1

2

これを行うためのモジュールは知りませんが、考えられる解決策の 1 つを次に示します。

import re

def pcre_escape_repl(match):
    char = match.group(0)
    if ord(char) in range(32, 127):
        # if this is a printable ascii character, use re.escape instead of a \x escape
        return re.escape(char)
    # replace non-ascii (or non-printable) characters with a \x escape
    return r'\x{' + hex(ord(char))[2:] + '}'

def pcre_escape(s):
    regex = re.compile('.', re.DOTALL)
    return regex.sub(pcre_escape_repl, s)

例:

>>> print pcre_escape(u"\uC3A9\xe9")
\x{c3a9}\x{e9}
>>> print pcre_escape("[foo]{bar}")
\[foo\]\{bar\}
于 2012-10-10T23:01:49.843 に答える