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

6

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

字符串 = "[abcd, abc, a, b, abc]"

我想将其转换为数组。我一直在使用Python中的split函数,但我得到了新数组中开始和结束括号上的空格和括号。我尝试使用一些if语句解决这个问题,但是我一直会错过一些单词末尾的字母。

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


1
你已经尝试了什么?请展示你的代码。 - trotta
"我试图解决这个问题,你尝试了什么?你遇到了什么具体的问题?" - pvg
7个回答

6
假设您的元素不以空格或方括号开头或结尾,您可以直接将它们剥离(在分割之前可以去掉方括号):
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
对于更大的列表,先删除括号再分割会更有效率。 - Ma0
如果你使用.split(', ')(以逗号和空格分割),就可以避免使用.strip() - Ma0

2
你也可以这样做。
>>> s = string[1:len(string)-1].split(", ")
>>> s
['abcd', 'abc', 'a', 'b', 'abc']

1
如果这个列表中的值本身就是变量(看起来是这样,因为它们没有加引号),将此字符串转换为等效列表的最简单方法是:
string = eval(string)

注意:如果您的列表中的值应为字符串,则此方法不起作用。


1
另一种解决这个问题的方法。
string = "[abcd, abc, a, b, abc]"
result = string[1:len(string)-1].split(", ")
print(result)

希望这有所帮助。

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

0
我建议如下。
[list_element.strip() for list_element in string.strip("[]").split(",")]

首先去掉括号,然后按照相应的方式分割。


0

首先从字符串中删除[],然后按逗号分割,最后使用strip函数删除结果项中的空格。


4
只需以逗号+空格分隔即可。 - Aran-Fey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接