在Python中将字符串拆分为数组

在Python中将字符串拆分为数组,python,arrays,string,Python,Arrays,String,我有一个结构如下的字符串 string=“[abcd,abc,a,b,abc]” 我想把它转换成一个数组。我一直在Python中使用split函数,但在新数组的开始和结束处都有空格和括号。我试着用一些if语句来解决这个问题,但最后我还是在一些单词中漏掉了字母 请记住,我不知道字符串中元素的长度。它可以是1、2、3等等。首先从字符串中删除[和],然后使用逗号拆分,然后从结果项中删除空格(使用strip)。假设元素从不以空格或方括号结尾或开始,您可以将它们去掉(在拆分之前可以去掉括号): 它给出了预

我有一个结构如下的字符串

string=“[abcd,abc,a,b,abc]”

我想把它转换成一个数组。我一直在Python中使用split函数,但在新数组的开始和结束处都有空格和括号。我试着用一些if语句来解决这个问题,但最后我还是在一些单词中漏掉了字母


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

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

假设元素从不以空格或方括号结尾或开始,您可以将它们去掉(在拆分之前可以去掉括号):

它给出了预期的结果

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']

你也可以这样做

>>> s = string[1:len(string)-1].split(", ")
>>> s
['abcd', 'abc', 'a', 'b', 'abc']

如果您不想使用
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']

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

string = eval(string)

注意:如果列表中的值应为字符串,则此操作无效。

我建议执行以下操作

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

首先拆下支架,然后相应地将其拆分。

解决此问题的另一种方法

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

希望这有帮助

到目前为止,您尝试了什么?请向我们展示您的代码。“我尝试过解决它”您尝试了什么,遇到了什么具体问题?或者只是在逗号+空格上拆分。对于更大的列表,先删除括号,然后拆分会更有效。如果您执行
.strip()
。拆分(',')(在逗号+空格上拆分),则可以避免使用
.strip()
string = "[abcd, abc, a, b, abc]"
result = string[1:len(string)-1].split(", ")
print(result)