Python - 如何将转义序列转换为字符串文字

时间:2017-04-02 03:08:40

标签: python string encoding escaping

python有些新东西,说实话,不太熟悉Python中的编码

假设在解析text / html输入时,我最终得到的路径如下所示

line = \\dfslocation\prj\gct\asw\sw_archive

然而,在处理的早期部分,似乎转义序列'\ a'和\'t'已经不再存储为文字。

literal_line = "%r"%(line)
print literal_line   

\\dfslocation\prj\gct\x07sw\\sw_archive

我最好的猜测是当我尝试将电子邮件转换为文本

for part in self.msg.walk():
  if part.get_content_type().startswith('text/plain'):
    plain_text_part = part.get_payload(decode=False)
    received_text += '\n'
    received_text += plain_text_part

received_text = received_text.encode('ascii', 'ignore')

后来我想用它作为网络路径,这需要它的字面形式 - 即\ a,而不是\ x07(ASCII Bel字符)

我能想到的蛮力方式是搜索所有转义序列https://docs.python.org/2.0/ref/strings.html,并用相应的字符串文字替换它们。

有更好的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试将行变量内容存储为原始而非ASCII。

如果按原样存储,\a将转换为x07

>>> line = "\\dfslocation\prj\gct\asw\sw_archive"
>>> line
'\\dfslocation\\prj\\gct\x07sw\\sw_archive'

但是,如果您使用r'<your_ascii_text>'格式存储为原始格式,则不会转换为特殊字符。

>>> line  = r'\\dfslocation\prj\gct\asw\sw_archive'
>>> print line
\\dfslocation\prj\gct\asw\sw_archive
>>>

原始字符串将\a视为\a,使其适合Windows文件名和正则表达式。