Python 翻译已解析字符串中转义字符的有效方法

Python 翻译已解析字符串中转义字符的有效方法,python,regex,string,performance,replace,Python,Regex,String,Performance,Replace,我正在寻找一种有效的方法将字符串中的转义序列(Unicode)转换为目标字符。这些字符串是从我们想要根据规则转换的文件中读取的一些经过解析的语言字符串:(注意:转义规则与python本身的规则不同) (基本上,这些规则与许多语言中可用的转义规则有些相似,例如Perl和Ruby,如果我没有错的话) (请注意:我在示例中使用原始或标准形式的字符串只是为了 显示字符串如何准确转换的图示) 使用这些规则是否可以改进最简单的方法,即在字符串中循环并执行lookaheads,在过程中附加到目标字符串 一个有

我正在寻找一种有效的方法将字符串中的转义序列(Unicode)转换为目标字符。这些字符串是从我们想要根据规则转换的文件中读取的一些经过解析的语言字符串:(注意:转义规则与python本身的规则不同)

(基本上,这些规则与许多语言中可用的转义规则有些相似,例如Perl和Ruby,如果我没有错的话)

(请注意:我在示例中使用原始或标准形式的字符串只是为了 显示字符串如何准确转换的图示)

使用这些规则是否可以改进最简单的方法,即在字符串中循环并执行lookaheads,在过程中附加到目标字符串


一个有点类似的问题提供了基于拆分和重新连接字符串的答案,但我认为这不适用于这里,因为连续转义问题。

我根本不理解您的第二个模式匹配示例。你所说的“一次逃跑,然后…”是什么意思-没有逃跑。另外,哪一个Python版本?仅Py3是可以的。这些不是正式的正则表达式模式,只是规则的说明。例如:“aa\\\nbb”、“aa\\\rbb”、“aa\\\r\nbb”都表示“aabb”。我会试着重新措辞。我明白了。你是怎么弄到这些线的?你是从文件中读取它们的吗?如果是这样,为什么它们是原始字符串?如果它们不是原始字符串,那么似乎大部分工作都可以通过简单的
print()
完成,但这不太可能……我们正在从文件中读取。我对原始字符串或普通字符串的使用仅用于说明。我们正在解析一个语言文件,并希望将这些翻译应用于已解析的字符串。
\uxxxx (four hex digits) --> gives the Unicode character with the given code point
\LF \CR \CR+LF  --> '' : a backslash character followed by a line break removes 
                         both of them, where line break is not platform specific.
(For example: "aa\\\nbb", "aa\\\rbb", "aa\\\r\nbb" all gives "aabb")

\f --> FF char
\n --> LF char
\r --> CR char
\t --> TAB char
\C where C is any other *Unicode* character  ---> gives C itself.
  This includes the escaped backslash '\\' sequence, which should be consumed
  first from left to right:

  r'\\\\u0050' --> r'\\u0050'
  r'\\\\\u0050' --> r'\\P'