将字符串转换为列表

时间:2016-09-05 17:46:10

标签: python python-2.7

有人可以帮我一个简单的代码,它返回一个列表作为输出到列表转换为字符串?列表不是这样的:

a = u"['a','b','c']"

但变量是这样的:

a = '[a,b,c]'

所以,

list(a)

将产生以下输出

['[', 'a', ',', 'b', ',', 'c', ']']

相反,我希望输入是这样的:

['a', 'b', 'c']  

我甚至尝试使用ast.literal_eval()函数 - 使用时我得到ValueError异常,说明参数是格式错误的字符串。

2 个答案:

答案 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)

这会检查字符是否在字母表中(小写),如果是,则将其替换为带有单引号的字符。

为什么不使用此解决方案?:

  • 重复元素失败
  • 对于包含多个单个字符的元素失败。
  • 你需要小心混淆单引号和双引号

为何使用此解决方案?:

  • 没有理由使用这个解决方案而不是Martijn。但无论如何编码都很有趣。

祝你的问题好运。