2010-05-11 66 views
0

比方说,我有以下文字:解析基于指定的标识符的字符串

input = "one aaa and bbb two bbbb er ... // three cccc" 

我想解析为一组包含

criteria = ["one", "two", "three"] 
v1,v2,v3 = input.split(criteria) 

变量这个我知道,上面的例子不起作用,但是Python中是否有一些实用工具可以让我使用这种方法?我知道标识符将提前什么,所以我会认为有一定是一个办法做到这一点...

感谢您的帮助, JML

回答

1

不是非常优雅,但它的工作原理:

>>> s 
'one aaa two bbbb three cccc' 
>>> re.split(r"\s*(?:one|two|three)\s*", s) 
['', 'aaa', 'bbbb', 'cccc'] 

?:阻止它在结果中返回分隔标识符。

+0

我认为这是一个不错的解决方案。谢谢。 – jml 2010-05-11 23:10:14

1

所以,这么难看,但它应该做你需要的东西:

i1 = iter(input.split()) 
i2 = iter(input.split()) 
next(i2) 
strdict = dict(zip(i1, i2)) 
print operator.itemgetter(*criteria)(strdict) 
+0

很酷。我不认为它是丑陋的!我的意思是;考虑这在c中完成。 :) – jml 2010-05-11 23:11:26