假設我有一個程序接收我無法真正控制的輸入。以下變量作爲IS(我們不能改變這裏的輸入)餵養:將帶有轉義序列的字符串轉換爲python中的原始字符表示
a = "C:\temp"
b = "C:\games"
c = "Hello World"
d = "\t"
不幸的是,Python會誤解的東西,放在轉義序列:
In [138]: a[2]
Out[138]: '\t'
In [139]: b[2]
Out[139]: '\\'
In [140]: d[0]
Out[140]: '\t'
假設謎底已被發現。它應該做到以下幾點:
def answer(x):
pass #TODO: your code goes here
期望的產出:
In [200]: answer(a)[2]
Out [201]: '\\'
In [202]: answer(a)[3]
Out [203]: 't'
In [204]: answer(b)[2]
Out [205]: '\\'
In [206]: answer(b)[3]
Out [207]: 'g'
In [208]: answer(c)
Out [209]: 'Hello World'
我使用AST模塊也使用解碼,都無濟於事已經嘗試過:
In [144]: import ast
In [145]: ast.literal_eval(a)
File "<unknown>", line 1
C: emp
^
SyntaxError: invalid syntax
或用解碼:
In [147]: a.decode('string-escape')[2]
Out[147]: '\t'
S olve爲答案()
編輯:「\」,在[204]例如,不是「\」
'」 \''不能實現,因爲'\''總是一個轉義前綴,我相信你正在尋找''\\''。 – Uriel
告訴我們你如何接受這個輸入。最合理的輸入方式首先不適用於轉義序列解釋。 – user2357112
'b [2]',至少,*是*單個反斜槓。您將索引的返回值與值的字符串表示混淆在一起。 – chepner