2017-04-02 10 views
1

はやや新しい文字列リテラルにエスケープシーケンスを変換する方法、と仮定 パイソン - text/htmlの入力を解析中のpythonに

Pythonの

でのエンコードに正直非常に精通していないことを、私は次のようになり、パスで終わります

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

は、しかし、処理の前半では、エスケープシーケンス「\ A」のように思えるし、\「t」はすでにもはやリテラルとして格納されていません。私は

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

後、私はこれがそのリテラル形式であることを必要となるネットワークパス、としてこれを使用する上でテキストに電子メールを変換しようとしたとき、私の最高の推測では、それが起こっている

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

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

- ie \ a0 \ x07(ASCIIのベル文字)

私が考えることができる猛烈なやり方は、すべてのエスケープシーケンスhttps://docs.python.org/2.0/ref/strings.htmlを検索し、対応する文字列リテラルに置き換えることです。

これを行うより良い方法はありますか?

ありがとうございます。

答えて

0

ASCIIの代わりにライン可変コンテンツを生データとして保存してください。

そのまま保存すると、\ax07に変換されます。あなたがr'<your_ascii_text>'形式を使用して、生として保存する場合

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

しかし、それは特別な文字に変換しません。

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

生の文字列は、それらがうまく、Windowsのファイル名と正規表現のために適合すること、\aとして\a扱います。