在解析后的字符串中转换转义字符的有效方法

时间:2013-09-26 10:24:06

标签: python regex string performance replace

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

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

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

(请注意:我在示例中使用原始或普通形式的字符串仅适用于 插图显示字符串的确切翻译方式)

这些规则是否有可能改进最简单的循环字符串并进行前瞻的方法,并附加到进程中的目标字符串。

有点类似的问题here提供了基于拆分和重新加入字符串的答案,但我不认为这可以在这里应用,因为连续的转义问题。

0 个答案:

没有答案