不使用 eval() 直接将 python 字符串转换为字节
Converting python string into bytes directly without 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'吗?
是的,ast.literal_eval
是安全的,因为它只评估 文字 。
>>> import ast
>>> stringAsByte = "b'a'"
>>> ast.literal_eval(stringAsByte)
b'a'
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'吗?
是的,ast.literal_eval
是安全的,因为它只评估 文字 。
>>> import ast
>>> stringAsByte = "b'a'"
>>> ast.literal_eval(stringAsByte)
b'a'