擅长:python、mysql、java
<p>正如Trimax的注释所示:<code>:</code>(冒号)是一个非单词字符,所以要正确分割行,您需要在模式中包含它。或者用西娅的答案。在</p>
<p>关于模式,<code>\W</code>等于<code>[^a-zA-Z0-9_]</code>(<a href="https://docs.python.org/2/library/re.html#regular-expression-syntax" rel="nofollow">https://docs.python.org/2/library/re.html#regular-expression-syntax</a>),所以您只需在其中添加冒号:<code>[^a-zA-Z0-9_:]</code></p>
<p>对于第二部分,只需使用结果列表的第一个元素作为dict键,并将剩余的列表以切片的形式分配给它。
像这样:</p>
<pre><code> result_dict = {}
for line in file_lines:
line_splitted = re.split('[^a-zA-Z0-9_:]+', line)
result_dict[line_splitted[0]] = line_splitted[1:]
</code></pre>
<p>但是请注意,如果文本包含具有相同数字的行,则会丢失数据,因为在为现有键分配新值(本例中为单词列表)时,它将覆盖以前的值。在</p>