求助:使用ast.literal_eval转换字符串形式列表时结果不符预期
问题原因与解决办法
你的问题出在变量a的结构上:a实际是一个被外层双引号包裹的字符串,内容是["123456789","987654321"]。当你直接用ast.literal_eval(a)时,解析器会把外层的双引号识别为字符串的边界,最终返回的是字符串["123456789","987654321"]——如果你把这个字符串当成列表来用,自然会把每个字符拆成单独元素。
要得到预期的列表,需要先去掉外层的引号,再解析:
import ast a = """\"[""123456789"",""987654321""]\"""" # 第一步:去掉字符串首尾的双引号 cleaned_a = a.strip('"') # 第二步:解析处理后的字符串 lst = ast.literal_eval(cleaned_a) print(lst) # 输出: ['123456789', '987654321']
也可以用json模块来解析(因为内容符合JSON格式):
import json a = """\"[""123456789"",""987654321""]\"""" cleaned_a = a.strip('"') lst = json.loads(cleaned_a) print(lst) # 输出: ['123456789', '987654321']
内容的提问来源于stack exchange,提问作者some_programmer
相关产品推荐
相关产品推荐

