小能豆

将 Python 中列表的字符串表示形式转换为列表对象

py

我有一些格式的数据

[[prod149090160, prod146340131, prod160860042, prod147040186, prod147860348, prod157590283, prod153940219, prod162460011, prod160410115, prod157370014], [prod162290002, prod151790213, prod159380278, prod154180602, prod160020244, prod161410007, prod155540059, prod152810207, prod152870263, prod159300061], [prod156900051, prod157590288, prod153540027, prod162940222, prod160330181, prod162680033, prod155370061, prod156970034, prod159310027, prod159410165]]

这是字符串格式的列表列表。有没有简单的方法可以将其转换为内置的 Python 列表类型。


阅读 16

收藏
2024-11-04

共1个答案

小能豆

你可以使用 Python 的 eval 函数来将字符串格式的数据直接转换为嵌套的 Python 列表。不过,使用 eval 存在一定风险,因为它会执行字符串中的代码。若确保字符串内容可信且不包含恶意代码,可以安全地使用 eval

data_str = "[[prod149090160, prod146340131, prod160860042, prod147040186, prod147860348, prod157590283, prod153940219, prod162460011, prod160410115, prod157370014], [prod162290002, prod151790213, prod159380278, prod154180602, prod160020244, prod161410007, prod155540059, prod152810207, prod152870263, prod159300061], [prod156900051, prod157590288, prod153540027, prod162940222, prod160330181, prod162680033, prod155370061, prod156970034, prod159310027, prod159410165]]"

# 使用 eval 将字符串转换为列表
data_list = eval(data_str)

print(data_list)

安全方法:使用 ast.literal_eval

如果数据格式允许,你也可以用 ast.literal_eval 来解析字符串,这样可以避免直接执行代码,提高安全性。

import ast

data_str = "[['prod149090160', 'prod146340131', 'prod160860042', 'prod147040186', 'prod147860348', 'prod157590283', 'prod153940219', 'prod162460011', 'prod160410115', 'prod157370014'], ['prod162290002', 'prod151790213', 'prod159380278', 'prod154180602', 'prod160020244', 'prod161410007', 'prod155540059', 'prod152810207', 'prod152870263', 'prod159300061'], ['prod156900051', 'prod157590288', 'prod153540027', 'prod162940222', 'prod160330181', 'prod162680033', 'prod155370061', 'prod156970034', 'prod159310027', 'prod159410165']]"

data_list = ast.literal_eval(data_str)

print(data_list)

注意事项

确保数据字符串是正确的列表格式(包括引号包裹字符串)后,ast.literal_eval 是最安全的选择。

2024-11-04