Python:如何将类列表结构的字符串转换为列表?
嘿,这个场景我碰到好多次了,给你几个实用的办法,优先选最安全的那种哈:
把类列表字符串转成Python列表的解决方案
方法1:使用ast.literal_eval()(强烈推荐)
这是最稳妥的方式,ast是Python标准库的模块,它专门用来解析Python的字面量(比如列表、字典、元组这些),而且不会像eval()那样执行任意代码,安全性拉满。
代码示例:
import ast # 你的原始字符串 str_data = "['Fish & Chips', 'Fast Food', 'Restaurants']" # 转换为列表 result_list = ast.literal_eval(str_data) # 验证结果 print(result_list) # 输出: ['Fish & Chips', 'Fast Food', 'Restaurants'] print(type(result_list)) # 输出: <class 'list'>
方法2:使用json.loads()(需处理引号)
JSON格式要求字符串用双引号,所以我们需要先把原始字符串里的单引号替换成双引号,再用json模块解析:
代码示例:
import json str_data = "['Fish & Chips', 'Fast Food', 'Restaurants']" # 替换单引号为双引号,适配JSON格式 json_compatible_str = str_data.replace("'", '"') result_list = json.loads(json_compatible_str) print(result_list) # 输出: ['Fish & Chips', 'Fast Food', 'Restaurants']
⚠️ 注意:如果你的字符串里本身包含双引号(比如某个元素是"Fish & 'Chips'"),这个方法就会出错,所以通用性不如方法1。
方法3:手动分割(不推荐,容易踩坑)
如果不想用标准库,也可以手动处理字符串,但这种方法只适用于格式绝对规范的情况——要是元素里包含逗号或者单引号,直接就崩了:
代码示例:
str_data = "['Fish & Chips', 'Fast Food', 'Restaurants']" # 去掉首尾的[],按', '分割,再去掉每个元素的单引号 result_list = [item.strip("'") for item in str_data.strip('[]').split(', ')] print(result_list) # 输出: ['Fish & Chips', 'Fast Food', 'Restaurants']
比如如果你的元素是['Fish, Chips', 'Fast Food'],分割后就会得到错误的结果,所以除非万不得已,别用这个方法。
内容的提问来源于stack exchange,提问作者Jachin
相关产品推荐
相关产品推荐

