有没有办法将包含算术运算的列表转换为实际列表?

M T*_*omb 5 python string list

我想转换一个字符串,例如:

s = "[2-1,2,3]"
Run Code Online (Sandbox Code Playgroud)

放入列表中,例如:

a = [1,2,3]
Run Code Online (Sandbox Code Playgroud)

我尝试过json

s = "[2-1,2,3]"
a = json.loads(s)
Run Code Online (Sandbox Code Playgroud)

但它无法处理2-1。有没有一种简单的方法可以将字符串转换为任何类型的数据类型?

Nai*_*dra 0

这是编写编译器时需要解决的常见问题。通常这属于lexing。解析器通常有一个标记列表,监视标记,然后将其传递给解析器,然后传递给编译器。

不过,您的问题无法用词法分析器完全解决,因为您还需要2-1评估 to 1。在这种情况下,我建议使用eval@Danielhao 建议的方式,因为这是实现目标的简单而干净的方法。不过,请记住使用它时的注意事项(安全性和其他方面)。(特别是在生产中)

如果您对解析感兴趣,请查看:

  1. https://craftinginterpreters.com/contents.html
  2. https://tomassetti.me/parsing-in-python/