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,并用相应的字符串文字替换它们。
有更好的方法吗?
由于
答案 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文件名和正则表达式。