当前位置: 首页 > 面试题库 >

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

那正初
2023-03-14
问题内容

在处理未知字符串时,使用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'


 类似资料:
  • 问题内容: 我正在使用以下代码从外部程序获取标准输出: 方法返回一个字节数组: 但是,我想将输出作为普通的字符串使用。这样我就可以像这样打印它: 我认为这就是方法的用途,但是当我尝试使用它时,我又得到了相同的字节数组: 如何将字节值转换回字符串?我的意思是,使用”batteries”而不是手动进行操作。我希望它与Python 3兼容。 问题答案: 你需要解码bytes对象以产生一个字符串:

  • 问题内容: 我对Python中的JSON感到有些困惑。在我看来,这就像是一本字典,出于这个原因,我正在尝试这样做: 但是当我这样做时,它会给出一个错误。 如何将该字符串转换为结构,然后调用以获得“示例词汇表”? 问题答案:

  • 问题内容: 我正在研究python和网络。 肯定是在听。但这似乎需要转换为文本字符串。 我见过有人使用 struct.unpack() ,但是我不确定它是如何工作的。转换方式是什么? 问题答案: 您从中得到的是一个字符串: 从套接字接收数据。返回值是一个字节对象,表示接收到的数据。 在Python 3.x中,要将字符串转换为Unicode文本字符串,您必须知道该字符串使用什么字符集编码,因此可以调

  • 问题内容: 每当我致电时,都会收到以下错误消息: 还有其他方法可以将ElementTree对象转换为XML字符串吗? 追溯: 问题答案: 对象没有方法。挂断该电话,该电话将正常工作: 仅当有实例时才需要使用。 其他说明: 这将产生一个 bytestring ,在Python 3中是该类型。 如果必须有一个对象,则有两个选择: 从UTF-8解码结果字节值: 使用; 这样可以避免编码/解码周期: 如果

  • 问题内容: 我有一个字符串,是这样的:。 我想将其转换为列表。我知道我可以使用eval(string)来获取列表,但是eval令我感到恐惧,因为它可能会造成灾难(并且因为我可以获取非列表作为有效输出)。还有另一种更安全的方式将此字符串转换为列表吗?我知道这是一个列表,所有不是列表的数据都是无效数据(应该检查和/或抛出错误)。 问题答案: 如果您坚持要这样做,可以使用ast.literal_eval

  • 我只是无法在c中转换不同的数据类型,我知道c是一种强类型语言,所以我在这里使用了,但我面临一个问题,错误消息是 从“std::string{aka std::basic_string}类型转换为“int”类型的static_