擅长:python、mysql、java
<p>您的代码看起来像人们期望的那样工作:<code>"".join(str(w) for w in nameData)</code>生成一个由<code>nameData</code>中每个项的串联组成的字符串。你知道吗</p>
<p>机会是你想要的</p>
<pre><code>for key in nameData:
namelist.write('\n' 'KPLR00' + key + '-2009131105131')
</code></pre>
<p>或者更好:</p>
<pre><code>for key in nameData:
namelist.write('\nKPLR%09i-2009131105131'%int(key)) #no string concatenation
</code></pre>
<p>字符串连接往往比较慢,而且如果您不仅对字符串进行操作,还需要显式调用<code>str</code>。下面是一对显示差异的ideone片段:<a href="http://ideone.com/RR5RnL" rel="nofollow">http://ideone.com/RR5RnL</a>和<a href="http://ideone.com/VH2gzx" rel="nofollow">http://ideone.com/VH2gzx</a></p>
<p>同样,上面的格式字符串为<code>'%09i'</code>的表单将填充0,使数字最多为9位。因为格式是<code>'%i'</code>,所以我添加了一个到<code>int</code>的显式转换。有关详细信息,请参见此处:<a href="http://docs.python.org/2/library/stdtypes.html#string-formatting-operations" rel="nofollow">http://docs.python.org/2/library/stdtypes.html#string-formatting-operations</a></p>
<p>最后,这里是一个单行版本(除了<code>with</code>语句,您当然应该保留它):</p>
<pre><code>namelist.write("\n".join("KPLR%09i-2009131105131"%int(line.split()[0]) for line in file_P))
</code></pre>