在Python

时间:2017-06-06 08:20:31

标签: python arrays string

我有一个具有以下结构的字符串。

string =" [abcd,abc,a,b,abc]"

我想将其转换为数组。我一直在Python中使用split函数,但是我在新数组的开头和结尾都有空格和括号。我尝试用一​​些if语句解决它,但最后我总是丢失一些字母。

请记住,我不知道字符串中元素的长度。它可能是1,2,3等。

7 个答案:

答案 0 :(得分:2)

假设你的元素永远不会以空格或方括号结尾或开始,你可以将它们剥离(在分割之前可以剥离括号):

arr = [ x.strip() for x in string.strip('[]').split(',') ]

按预期给出

print (arr)
['abcd', 'abc', 'a', 'b', 'abc']

strip的好处在于它保留了所有内部角色。用:

string = "[ab cd, a[b]c, a, b, abc]"

你得到:['ab cd', 'a[b]c', 'a', 'b', 'abc']

答案 1 :(得分:2)

你也可以这样做

ggplot(df2, aes(val, fill=period)) + geom_density(alpha=.2)

答案 2 :(得分:1)

解决此问题的另一种方法

string = "[abcd, abc, a, b, abc]"
result = string[1:len(string)-1].split(", ")
print(result)

希望这有帮助

答案 3 :(得分:0)

首先从字符串中删除[],然后在逗号上拆分,然后从结果项中删除空格(使用strip)。

答案 4 :(得分:0)

如果您不想使用strip,可以通过以下笨拙的方式完成:

arr = [e[1:] for e in string.split(',')]
arr[len(arr)-1]=arr[len(arr)-1].replace(']', '')


print(arr)
['abcd', 'abc', 'a', 'b', 'abc']

答案 5 :(得分:0)

如果此列表中的值本身就是变量(看起来是因为它们未被引用),将此字符串转换为等效列表的最简单方法是

string = eval(string)

警告:如果列表中的值应为字符串,则无效。

答案 6 :(得分:0)

我建议关注。

[list_element.strip() for list_element in string.strip("[]").split(",")]

首先删除括号,然后将其拆分。