<p>你在这里太离谱了</p>
<p>您的行包含多个下划线<code>_</code>字符。拆分结果如下:</p>
<pre><code>>>> line = 'Leo DiCaprio______4.5 6.5 7.5\n' #\n added to simulate a line read from a file.
>>> line.split('_')
['Leo DiCaprio', '', '', '', '', '', '4.5 6.5 7.5\n']
</code></pre>
<p>要访问“floats”,您需要获取分割结果的最后一项</p>
<pre><code>>>> floats = line.split('_')[-1].strip() #strip out the '\n'
>>> floats
'4.5 6.5 7.5'
</code></pre>
<p>但是请注意,这里有多个数字,用空格隔开。不能一次全部转换为float,需要再次拆分它们</p>
<p>下面的行将分割组成项中的<code>floats</code>,然后将它们转换为实际的浮点类型</p>
<pre><code>>>> numbers = [float(x) for x in floats.split()]
>>> numbers
[4.5, 6.5, 7.5]
</code></pre>
<p>现在,我想你可能想把名字和数字列成一张表。最简单的方法就是使用dict</p>
<p>另外,我建议不要使用<code>floats</code>作为变量名,您很容易将其与<code>float</code>类型混淆。找个更好的名字。我不确定这些数字是什么,所以我将在下面的代码中称之为<code>numbers</code>,但您应该选择一个合适的名称,例如<code>scores</code>或<code>grades</code>或它们实际上是什么</p>
<pre><code>table = {}
with open('grades1.txt', 'r') as f: #use the with statement to open files!
for line in f:
words = line.strip().split('_')
name = words[0]
numbers = [float(x) for x in words[-1].split()]
table[name] = numbers
for k,v in table.items():
print(k, v)
</code></pre>