<p>也许你可以这样使用正则表达式:</p>
<pre><code>import re
def get_value(y):
if 'var1' in y or 'var3' in y or 'var4' in y:
return_value = y.split('=')[1].strip()
try:
return int(return_value)
except ValueError:
return return_value
elif 'var2' in y:
return_value = y.split('=')[1].strip().split(" ")
return [float(i.replace('"','')) for i in return_value]
string = """
<THING1> \
var1 = 0 \#
var2 = "0.0 100.0 0.0" \#
var3 = "IDENTIFYING_WORD" \#
var4 = 2 \#
</THING1>
<THING2> \
var1 = 5 \#
var2 = "0.0 100.0 0.0" \#
var3 = "IDENTIFYING_WORD" \#
var4 = 7 \#
</THING2>
"""
pat = re.compile(r'<THING\d>(.*?)</THING\d>')
x = re.findall(pat, string.replace('\n',''))
mainlist = [['var1','var2','var3','var4']]
for i in x:
mylist = []
for j in i.split(r'\#'):
if j.strip() != '':
mylist.append(get_value(j))
mainlist.append(mylist)
print(mainlist)
</code></pre>
<p>结果:</p>
<pre><code>[
['var1', 'var2', 'var3', 'var4'],
[0, [0.0, 100.0, 0.0], '"IDENTIFYING_WORD"', 2],
[5, [0.0, 100.0, 0.0], '"IDENTIFYING_WORD"', 7]
]
</code></pre>