这是我的清单;输入为字符串的数据库输出:
list_=(('[96, 71, 16, 81, 21, 56, 91]',),)
我的目标是将其转换为整体列表:[96, 71, 16, 81, 21, 56, 91]
我的尝试:
import ast
print ast.literal_eval(list_[0][0])
预期输出
Output:[96, 71, 16, 81, 21, 56, 91]
但是,该解决方案与某些输出
不兼容 list_[0][0]
导致错误:超出范围。
有关解决问题的其他可能方法的建议吗?感谢。
答案 0 :(得分:1)
import ast
print ast.literal_eval([y for x in list_ for y in x][0])
答案 1 :(得分:1)
while type(list_) is not str:
try:
list_ = list_[0]
except IndexError:
break
现在list_
是您想要的字符串。
答案 2 :(得分:0)
你试过这个:
from numpy import fromstring
fromstring(list_[0][0][1:(len(list_[0][0])-1)], sep=',', dtype='int32').tolist()
答案 3 :(得分:0)
只是为了好玩,一个通用的解开者
from collections import Iterable
def untangle(thing):
stack = [thing]
result = []
while stack:
current = stack.pop()
if isinstance(current, basestring):
if current[-1] == ']':
current = current[1:-1]
for x in current.strip().split(','):
result.append(int(x.strip()))
elif isinstance(current, Iterable):
stack.extend(reversed(current))
else:
print "dont know what do do with", repr(current)
return result
untangle((('[96, 71, 16, 81, 21, 56, 91]',),))
[96, 71, 16, 81, 21, 56, 91]