ast.literal_eval替代eval將字串形式的表示式解析為 Python 物件

海_纳百川發表於2024-08-21

如果一個字串表示一個列表,你可以使用 Python 的 ast.literal_eval 方法將其轉換為真正的列表。ast.literal_eval 是一個安全的方法,可以將字串形式的表示式解析為 Python 物件。

這裡是一個例子:

import ast

# 字串形式的列表
str_list = "[1, 2, 3, 4, 5]"

# 將字串解析為真正的列表
actual_list = ast.literal_eval(str_list)

print(actual_list)  # 輸出: [1, 2, 3, 4, 5]
print(type(actual_list))  # 輸出: <class 'list'>

ast.literal_eval 方法會將字串解析為 Python 字面量型別(如列表、字典、元組等),同時避免了使用 eval 帶來的安全風險。

如果字串包含了更復雜的資料結構,比如巢狀的列表或字典,ast.literal_eval 也能正確地解析。

例如:

str_list = "[[1, 2], [3, 4], [5, 6]]"
actual_list = ast.literal_eval(str_list)

print(actual_list)  # 輸出: [[1, 2], [3, 4], [5, 6]]

相關文章