有人可以帮我一个简单的代码,它返回一个列表作为输出到列表转换为字符串?列表不是这样的:
a = u"['a','b','c']"
但变量是这样的:
a = '[a,b,c]'
所以,
list(a)
将产生以下输出
['[', 'a', ',', 'b', ',', 'c', ']']
相反,我希望输入是这样的:
['a', 'b', 'c']
我甚至尝试使用ast.literal_eval()
函数 - 使用时我得到ValueError
异常,说明参数是格式错误的字符串。
答案 0 :(得分:2)
没有标准库可以加载这样的列表。但是你可以通过字符串处理轻松地做到这一点:
a.strip('[]').split(',')
会给你你的清单。
str.strip()
将从开头和结尾删除任何给定字符;所以它会从开头删除所有[
和]
个字符,直到找不到这些字符,然后从最后删除相同的字符。这足以满足您的输入样本。
str.split()
然后将剩余部分(在任一端减去[
和]
个字符)拆分为单独的字符串,任何一点都有逗号:
>>> a = '[a,b,c]'
>>> a.strip('[]')
'a,b,c'
>>> a.strip('[]').split(',')
['a', 'b', 'c']
答案 1 :(得分:0)
让我们使用黑客。
import string
x = "[a,b,c]"
for char in x:
if char in string.ascii_lowercase:
x = x.replace(char, "'%s'" % char)
# Now x is "['a', 'b', 'c']"
lst = eval(x)
这会检查字符是否在字母表中(小写),如果是,则将其替换为带有单引号的字符。
为什么不使用此解决方案?:
为何使用此解决方案?:
祝你的问题好运。