擅长:python、mysql、java
<p>问题就在这里:<code>line.split(';')[0] and line.split()[0]</code></p>
<p>你的<em>第二个</em>条件在空白处分裂。因此,除非输入的开头有分号(在这种情况下得到的是空字符串),否则它总是返回空格分割版本。你知道吗</p>
<p>您可能希望将两个拆分链接起来:</p>
<p><code>line.split(';')[0].split()[0]</code></p>
<hr/>
<p>要查看问题中的代码在做什么,请查看条件表达式在几种不同情况下的作用:</p>
<pre><code>array = ['srv1 s', 'srv2;192.168.9.1', ';192.168.1.1', 'srv1;srv2 192.168.1.1']
>>> for item in array:
... print("Original: {}\n\tSplit: {}".format(item, item.split(';')[0] and item.split()[0]))
...
Original: srv1 s
Split: srv1 # split on whitespace
Original: srv2;192.168.9.1
Split: srv2;192.168.9.1 # split on whitespace!
Original: ;192.168.1.1
Split: # split on special char, returned empty which is falsey, returns empty str
Original: srv1;srv2 192.168.1.1
Split: srv1;srv2 # split only on whitespace
</code></pre>