【发布时间】:2014-07-01 11:26:35
【问题描述】:
我正在尝试解析表单的标记-
!TAG1 VAL1=0.88 VALARRAY=0. 0. 0.8 !TAG2 VAL2=0.998 !END !END'
就标记而言,我知道这是表示不带引号的真实向量的一种相当糟糕的方式。但它是在我正在处理的旧代码中解析的,我不想更改“标准”输入格式。
我已经实现了一个 do while 循环来解析这个 - 程序逐字遍历字符串(单词=不包含空格)和两个计数器 - 一个坚持最后一个 = 的单词位置和second 查找包含= 的下一个单词。有什么好的pythonic迭代器可以咀嚼每个VAR=VALUE对的想法吗?
EDIT1:这是我的解决方案,尽管经过多次迭代后我得到了它。因此它不是很可读!
s1='!TAG1 VAL1=0.88 VALARRAY=0. 0. 0.8 !TAG1 VAL2=0.998 !END !END'
list=[]
word=''
for s in s1.split():
if (s[0]=='!'):
if word : list.append(word)
list.append(s)
word=''
else :
if '=' in s:
if word : list.append(word)
word=s
else:
word=(word+" "+s).strip()
if word: list.append(word)
print s1
print list
输出是-
!TAG1 VAL1=0.88 VALARRAY=0. 0. 0.8 !TAG1 VAL2=0.998 !END !END
['!TAG1', 'VAL1=0.88', 'VALARRAY=0. 0. 0.8', '!TAG1', 'VAL2=0.998', '!END', '!END']
希望这会有所帮助!
【问题讨论】:
-
您要忽略
!前面的单词吗?换句话说,你能从你给定的例子中给出例子匹配吗? -
确实如此,给我几分钟 :)
标签: python regex python-2.7 iterator