擅长:python、mysql、java
<p>您可以使用正则表达式预解析输出以提取各个部分,然后使用<code>StringIO</code>将每个部分解析为<code>csv.reader</code>,如下所示:</p>
<pre><code>import csv
import StringIO
from collections import OrderedDict
output = """
QueryTime
start,end
144488,144490
Data
Data - AData
id,G_id,name,type,time,sid,channel
23,-1,"B1",type1,144488,11,CH23
23,-1,"B1",type1,144488,11,CH23
Data - BData
id,G_id,time,se
23,-1,144488,undefined
23,-1,144488,undefined"""
sections = ['QueryTime', 'Data - AData', 'Data - BData', 'Data']
re_sections = '|'.join([re.escape(s) for s in sections])
tables = re.split(r'(' + re_sections + ')', output)
tables = [t.strip() for t in tables[1:]]
d_tables = OrderedDict()
for section, table in zip(*[iter(tables)]*2):
if len(table):
csv_input = csv.reader(StringIO.StringIO(table))
d_tables[section] = list(csv_input)
for section, entries in d_tables.items():
print section
print entries
print
</code></pre>
<p>给出以下输出:</p>
^{pr2}$