在某些時候,我們的python腳本接收串那樣:使用不正確格式化字符串Python的問題包含 X
In [1]: ab = 'asd\xeffe\ctive'
In [2]: print ab
asd�fe\ctve \ \\ \\\k\\\
數據被破壞,我們需要逃避\ x到正確解釋爲\ X,但\ c具有因此字符串中沒有特殊含義,因此必須完好無損。
到目前爲止,我發現的最接近的解決辦法是做這樣的事情:從IPython中採取
In [1]: ab = 'asd\xeffe\ctve \\ \\\\ \\\\\\k\\\\\\'
In [2]: print ab.encode('string-escape').replace('\\\\', '\\').replace("\\'", "'")
asd\xeffe\ctve \ \\ \\\k\\\
輸出,我假設AB是一個字符串不是unicode字符串(在後一種情況下,我們將不得不做一些像即:
def escape_string(s):
if isinstance(s, str):
s = s.encode('string-escape').replace('\\\\', '\\').replace("\\'", "'")
elif isinstance(s, unicode):
s = s.encode('unicode-escape').replace('\\\\', '\\').replace("\\'", "'")
return s
一個黑客是使用'repr',即'repr(s)[1:-1]'。 – DSM
不直接調用'__repr__'。它拼寫爲'repr(ab)'。 – habnabit
在字符串數據的源頭修復這個問題更有意義。你能詳細說明爲什麼你首先以ab ='asd \ xeffe \ ctive''的形式接收數據(而不是正確清理'ab ='asd \\ xeffe \\ ctive'')? – ezod