<p>将最后一行更改为:</p>
<pre><code># Printing each element of the 'listOfCallSigns' list
for i, row in enumerate(listOfCallSigns):
print i, row[0] # < added a [0] here
</code></pre>
<p>或者,也可以在此处添加<code>[0]</code>:</p>
<pre><code>for i, row in enumerate(table):
if i:
listOfCallSigns.append(re.findall(r"\d{9}", str(row.find_all('td')[4]))[0]) < added a [0] here
</code></pre>
<p>这里的解释是<code>re.findall(...)</code>返回一个列表(在您的例子中,只包含一个元素)。因此,<code>listOfCallSigns</code>最终成为“子列表列表,每个子列表包含一个字符串”:</p>
<pre><code>>>> listOfCallSigns
>>> [ ['311062900'], ['235056239'], ['311063300'], ['236111791'],
['245639000'], ['305500000'], ['235077805'], ['235011590'] ]
</code></pre>
<p>当您<code>enumerate</code>您的<code>listOfCallSigns</code>时,<code>row</code>变量基本上就是您在代码前面附加的<code>re.findall(...)</code>(这就是为什么您可以在它们之后添加<code>[0]</code>)。你知道吗</p>
<p>所以<code>row</code>和<code>re.findall(...)</code>都是“字符串列表”类型,如下所示:</p>
<pre><code>>>> row
>>> ['311062900']
</code></pre>
<p>要获取列表中的字符串,需要访问其第一个元素,即:</p>
<pre><code>>>> row[0]
>>> '311062900'
</code></pre>
<p>希望这有帮助!你知道吗</p>