2012-09-10 39 views
0

分割字符串我有格式的字符串通过分离器在python

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

如何可以与

[c, d,, ..] 

将它分成一个阵列到一个元素,a和b为另一个元件干净的结果数组。如果我尝试使用

s.split(',') 

即使[c,d,...]被拆分。

回答

2

如果你在2.6+,然后ast.literal_eval是要走的路......(假设你的文字是 - 否则,也许使用eval慎用) - 或者,看看pyparsing库,具有“安全”在http://pyparsing.wikispaces.com/Examples EVAL例如(寻找parsePythonValue.py)

literal_eval解决方案:

from ast import literal_eval 

s = "'a', 'b', ['c', 'd', 'z']" 
print literal_eval(s) 
1

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

如果你打算采取字符串操作方法:

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

import re 

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

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

1

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

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

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

+0

聪明,我喜欢这个。 –