不使用eval()将python字符串直接转换为字节

时间:2018-08-09 20:15:38

标签: python python-3.x byte eval

eval()在处理未知字符串时似乎很危险,这是我项目的一部分。

对于我的项目,我有一个字符串,叫做:

stringAsByte = "b'a'"

我尝试执行以下操作以直接转换该字符串(不使用eval):

byteRepresentation = str.encode(stringAsByte)
print(byteRepresentation) # prints b"b'a'"

很显然,这没有用,所以不要这样做:

byteRepresentation = eval(stringAsByte) # Uses eval!

print(byteRepresentation) # prints b'a'

还有另一种方法可以获取输出b'a'吗?

1 个答案:

答案 0 :(得分:3)

是的,使用ast.literal_eval是安全的,因为它只评估文字

>>> import ast
>>> stringAsByte = "b'a'"
>>> ast.literal_eval(stringAsByte)
b'a'