【发布时间】:2014-01-30 05:25:55
【问题描述】:
我正在尝试使用 pyparsing 解析字符串。使用下面的代码
import pyparsing as pyp
aString = "C((H2)(C(H3))) C((H1)(Cl1)) C(((C(H3))3))"
aSub = '(('+ pyp.Word('()'+pyp.srange('[A-Za-z0-9]'))+'))'
substituent = aSub('sub')
for t,s,e in substituent.scanString(aString):
print t.sub
我没有输出。但是,在字符串 aString = "C((H2)(C(H3))) C((H1)(Cl1)) C(((C(H3))3))" 中有多次出现 ((stuff)) - 特别是 ((H2)(C(H3)))、C((H1)(Cl1)) 和 C(((C(H3))3))。
我对@987654327@ 的理解是输入(在单个输入的情况下,就像我一样)代表所有可能成功返回匹配的字符组合。
运行代码
import pyparsing as pyp
aString = "C((H2)(C(H3))) C((H1)(Cl1)) C(((C(H3))3))"
aSub = '(' + pyp.Word(pyp.srange('[A-Za-z0-9]'))+')'
substituent = aSub('sub')
for t,s,e in substituent.scanString(aString):
print t.sub
输出
['(', 'H2', ')']
['(', 'H3', ')']
['(', 'H1', ')']
['(', 'Cl1', ')']
['(', 'H3', ')']
我所做的只是额外的一组外部括号,以及字符串内的括号选项,所需的字符串具有这些选项。我不确定为什么第一个程序什么也没给我,而第二个字符串给了我(部分)我想要的东西。
【问题讨论】:
标签: python string parsing python-2.7 pyparsing