<p>根据您所给出的data*,如果行以数字或空格开头,则输入会发生变化,并且可以将数据分隔为</p>
<p>(数字)(空格)(字母加1空格)(空格)(字母加1空格)(空格)(数字+逗号)</p>
<p>或者</p>
<p>(空格)(字母加1空格)(空格)(数字+逗号)</p>
<p>这就是下面的两个正则表达式所要寻找的,它们用前导数字的索引构建了一个字典,每个索引都有一个公司名称和一个公司和值对列表。你知道吗</p>
<p>我真的不知道你的矩阵安排是什么。你知道吗</p>
<pre><code>import re
data = {}
f = open('data.txt')
for line in f:
if re.match('^\d', line):
matches = re.findall('^(\d+)\s+((\S\s|\s\S|\S)+)\s\s+((\S\s|\s\S|\S)+)\s\s+([0-9,]+)', line)
idx, firm, x, company, y, value = matches[0]
data[idx] = {}
data[idx]['firm'] = firm.strip()
data[idx]['company'] = [(company.strip(), value)]
else:
matches = re.findall('\s+((\S\s|\s\S|\S)+)\s\s+([0-9,]+)', line)
company, x, value = matches[0]
data[idx]['company'].append((company.strip(), value))
import pprint
pprint.pprint(data)
</code></pre>
<p>-></p>
<pre><code>{'1': {'company': [('Manhattan (company name)', '25,000'),
('SK Ventures', '25,000'),
('AEA investors', '10,000')],
'firm': 'firm A'},
'2': {'company': [('Tencent collaboration', '16,000'),
('id TechVentures', '4,000')],
'firm': 'firm B'},
'3': {'company': [('xxx', '625')],
'firm': 'firm C'}
}
</code></pre>
<p>*这适用于您的示例,但可能无法很好地适用于您的实际数据。基督教青年会。你知道吗</p>