我想將字符串文字如r"r'\nasdf'"
轉換爲字符串(本例中爲'\\nasdf'
)。Python將字符串文字轉換爲字符串
另一種情況:r"'\nasdf'"
至'\nasdf'
。 我希望你明白。
這很重要,因爲我有一個python腳本解析器,它想知道字符串文字的確切內容。
是eval
一個巧妙的解決方案?字符串文字在之前被過濾(與tokenize
)並且不應該導致安全責任。沒有任何高貴的解決方案比評估文字?解析器庫可能?
編輯:增加了其他例子,以避免誤解。
我想將字符串文字如r"r'\nasdf'"
轉換爲字符串(本例中爲'\\nasdf'
)。Python將字符串文字轉換爲字符串
另一種情況:r"'\nasdf'"
至'\nasdf'
。 我希望你明白。
這很重要,因爲我有一個python腳本解析器,它想知道字符串文字的確切內容。
是eval
一個巧妙的解決方案?字符串文字在之前被過濾(與tokenize
)並且不應該導致安全責任。沒有任何高貴的解決方案比評估文字?解析器庫可能?
編輯:增加了其他例子,以避免誤解。
你想要的ast
module:
>>> import ast
>>> raw = r"r'\nasdf'"
>>> ast.literal_eval(raw)
'\\nasdf'
>>> raw = r"'\nasdf'"
>>> ast.literal_eval(raw)
'\nasdf'
這是評估包含Python源代碼(不同於eval()
)/解析字符串的一種安全的方法。
是的,有:
>>> s = r'\nasdf'
>>> s.decode('string-escape')
'\nasdf'
對不起,我的問題不太清楚(我編輯)。這是一個字符串轉換的原始字符串,不是字符串字符串轉換。 –
這將是一個'原始'字符串,而不是'字面' –
我認爲我沒有制定我的問題是正確的,我試圖再做正確的。我的意思是字符串文字,而不是原始字符串。 –
夠清楚了。和literal_eval是更高貴的解決方案:) –