-1

我有一个格式的字符串

s = "a, b, [c, d, ....]"

我怎样才能把它分成一个数组

[c, d,, ..] 

干净地放入一个元素和 a 和 b 作为结果数组的另一个元素。如果我尝试使用

s.split(',')

甚至 [c,d, ...] 也会分裂。

4

4 回答 4

1

如果您使用的是 2.6+,那么ast.literal_eval就是要走的路......(假设您有文字 - 否则,可能eval要谨慎使用) - 或者,查看在httppyparsing上有一个“安全”评估示例的库: //pyparsing.wikispaces.com/Examples(查找 parsePythonValue.py)

literal_eval 解决方案:

from ast import literal_eval

s = "'a', 'b', ['c', 'd', 'z']"
print literal_eval(s)
于 2012-09-10T09:13:03.073 回答
0

eval()可以做到。

>>> s = "'a', 'b', ['c', 'd', 'e', 'f']"
>>> a = eval(s)
>>> a
('a', 'b', ['c', 'd', 'e', 'f'])

或者您可以对字符串进行一系列修改。

>>> s = "a, b, [c, d, e, f]"
>>> a = s.replace("[","").replace("]","").replace(" ","").split(",")
>>> a
['a', 'b', 'c', 'd', 'e', 'f']
于 2012-09-10T09:08:29.940 回答
0

如果你需要它在两个系统之间交换数据,你可以使用 json:

>>> import json
>>> s = '[1, 2, [3, 4]]'
>>> json.loads(s)
[1, 2, [3, 4]]

如果你需要文字,你必须引用它们。

于 2012-09-10T09:15:28.643 回答
-1

如果您打算采用字符串操作方法:

http://docs.python.org/library/re.html

import re

text = "a, b, [c, d, ....]"
matches = re.split(r"\W+", text);
print matches

否则我会直接使用评估方法。

于 2012-09-10T09:12:15.103 回答