<p>如果您担心格式化,那么我会使用<a href="https://docs.python.org/library/collections.html#collections.namedtuple" rel="nofollow noreferrer">^{<cd1>}</a>作为中间值:</p>
<pre><code>from collections import namedtuple
Data = namedtuple('Data', ['position', 'magnitude'])
mystr = """14km WSW of Willow, Alaska$2.4
4km NNW of The Geysers, California$0.9
13km ESE of Coalinga, California$2.1"""
list_of_data = []
for line in mystr.split('\n'): # equivalent to your "for line in source"
list_of_data.append(Data(*line.split('$')))
</code></pre>
<p>这将为您提供以下信息:</p>
<pre><code>>>> list_of_data
[Data(position='14km WSW of Willow, Alaska', magnitude='2.4'),
Data(position='4km NNW of The Geysers, California', magnitude='0.9'),
Data(position='13km ESE of Coalinga, California', magnitude='2.1')]
</code></pre>
<p>易于操作:</p>
<pre><code>>>> ['{x.magnitude}, {x.position}'.format(x=x) for x in list_of_data]
['2.4, 14km WSW of Willow, Alaska',
'0.9, 4km NNW of The Geysers, California',
'2.1, 13km ESE of Coalinga, California']
</code></pre>
<p>或按大小排序:</p>
<pre><code>>>> sorted(list_of_data, key=lambda x: x.magnitude)
[Data(position='4km NNW of The Geysers, California', magnitude='0.9'),
Data(position='13km ESE of Coalinga, California', magnitude='2.1'),
Data(position='14km WSW of Willow, Alaska', magnitude='2.4')
</code></pre>
<p>最后,如果您的数据集很大,那么使用regex可能更有意义。但是用<code>str.split</code>解析数据并将其保存在<code>namedtuples</code>中并不复杂,所以我使用了这种方法。你知道吗</p>