擅长:python、mysql、java
<p>实际上,你不是在用字典。这是一个只有一个参数的函数调用:一个生成器表达式。词典理解更像这样:</p>
<pre><code>line_contents = {key: value.replace("\n", "") for key, value in line_contents.items()}
</code></pre>
<p><strong>编辑</strong>:niemmi很好地指出,值并不都是字符串。因此,你应该使用类似于他的建议:</p>
<pre><code>line_contents = {k: v.replace("\n", "") if isinstance(v, basestring) else v for k,v in line_contents.items()}
</code></pre>
<p>我使用<code>basestring</code>而不是niemmi的<code>str</code>,因为它们实际上是unicode。在python3中,应该使用<code>str</code>。你知道吗</p>
<p>你的怎么了?好吧,你给了<code>dict</code>一个论点。考虑一下:</p>
<pre><code>argument = []
for x in line_contents.items():
argument.append(map(strip(), x))
line_contents = dict(argument)
</code></pre>
<p>这就是你正在做的。对于每个键值对,您将给<code>map()</code>两个参数<code>strip()</code>和<code>x</code>。对于<code>map(strip(), x)</code>的一个调用,实际上是这样做的:</p>
<pre><code>function = strip()
result = []
for item in x:
result.append(function(item))
</code></pre>
<p>现在你必须明白问题所在。首先,没有定义<code>strip</code>。另一方面,应该为<code>map</code>提供函数,而不是函数返回的内容。如果您想使用<code>str.strip</code>,请这样做:</p>
<pre><code>map(str.strip, x)
</code></pre>
<P>问题是,从末端的{{CD12}}条;它不移除中间出现的新行。你知道吗</p>