<p>使用多个字符串连接的<code>line_str</code>的组合可能会减慢很多速度,如果您想要性能,不建议使用多个字符串连接(对于<code>filename = base+".txt"</code>之类的内容,这是可以的,但对于密集处理则不是。你知道吗</p>
<p>将<code>line</code>创建为<code>list</code>,然后使用<code>str.join</code>创建最后一个字符串以将其写入磁盘。附加到<code>list</code>要快得多。你知道吗</p>
<p>正如Maximilian刚才所建议的,您可以将您的条件转换为<code>elif</code>,因为它们是相互排斥的(x2)。还添加了一些微优化,以提高可读性以及。你知道吗</p>
<p>我建议你的内环应该是什么样子:</p>
<pre><code>for word in words:
segmentation = model.viterbi_segment(word)[0]
lenseg = len(segmentation)
if lenseg == 1:
line = ['/',segmentation[0],'/']
elif lenseg == 2:
line = ['/',segmentation[0],'* *',segmentation[1],'/']
elif lenseg > 2:
line = []
for b in range(lenseg):
if b == 0:
line += ['/',segmentation[0],'*']
elif b != (lenseg - 1):
line += [' *',segmentation[b],'* ']
else:
line+= [' *',segmentation[b],'/']
line.append(" ")
corpus.write("".join(line).encode('utf-8'))
</code></pre>
<p>备选方案:</p>
<ul>
<li>每次都将每个字符串写入输出文件</li>
<li>将数据写入<code>io.StringIO</code>对象并检索它以写入输出文件。你知道吗</li>
</ul>