我该如何对带有 \n 的字符串进行 eval 操作?
为什么这样不起作用?
a = eval('"hello \n"')
In [70]: eval("\"hello \n\"")
File "<string>", line 1
"hello
^
SyntaxError: EOL while scanning string literal
虽然如此
a = "hello \n"
我的使用场景是,通过子进程执行的脚本输出一个字典字符串,我捕获了它的stdout,并希望对其进行eval操作。
'''[
{ "hello": "the description of this is\' \n"}
]'''
eval
是做什么的吗?即使没有换行符,你甚至期望eval("hello")
做什么呢?你的第二个例子只是将一个字符串赋值给一个变量。 - Cory Kramereval(pprint.pformat('hello\n'))
可以正常工作,因为pprint.pformat()
返回结果的漂亮打印字符串而不是将其写入标准输出。 - Martijn Pieterspprint.pprint()
并д»Һж ҮеҮҶиҫ“еҮәпјҲstdoutпјүдёӯиҜ»еҸ–пјҢйӮЈд№Ҳ\
е’Ңn
д№ҹжҳҜеҲҶејҖзҡ„еӯ—з¬ҰпјҢ并且еҸҜд»Ҙдј йҖ’з»ҷeval()
гҖӮдҪҶд»Қ然жҳҜдёҚеҘҪзҡ„дё»ж„ҸпјҢеӣ дёәе®ғеҫҲж…ўпјҢиҖҢдё”жңүжӣҙеҘҪзҡ„жӣҝд»Јж–№жі•гҖӮast.literal_eval()
йҷҗеҲ¶дәҶеҸӘеҠ иҪҪPythonж–Үеӯ—пјҲе®үе…ЁпјүпјҢдҪҶжҳҜеҜ№дәҺиҝҷз§ҚдәӨжҚўпјҢJSONйҖҹеәҰжӣҙеҝ«гҖӮ - Martijn Pieters