2010-05-11 64 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