回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<h2>A部分-空行</h2>
<p>我目前正在用Python和JavaScript完成Kyran Dale的数据可视化。在例3.1中,我得到了:</p>
<pre><code>nobel_winners = [
{'name' : 'Albert Einstein',
'nationality': 'German',
'sex' : 'male',
'category' : 'Physics',
'year' : 1921},
{'name' : 'Paul Dirac',
'nationality': 'British',
'sex' : 'male',
'category' : 'Physics',
'year' : 1933},
{'name' : 'Marie Curie',
'nationality': 'Polish',
'sex' : 'female',
'category' : 'Chemistry',
'year' : 1911}
]
cols = nobel_winners[0].keys()
# cols.sort() # <<== this produces an error - see below
with open('./nobel_winners.csv', 'w') as f:
f.write(','.join(cols) + '\n')
for o in nobel_winners:
row = [str(o[col]) for col in cols]
f.write(','.join(row) + '\n')
with open('./nobel_winners.csv') as f:
for line in f.readlines():
print(line),
</code></pre>
<p>现在,生成的文件(noble_赢家.csv)是这样的:</p>
<pre><code>name,nationality,sex,category,year
Albert Einstein,German,male,Physics,1921
Paul Dirac,British,male,Physics,1933
Marie Curie,Polish,female,Chemistry,1911
</code></pre>
<p>很好,<strong>但是,当我打印输出(最后3行代码)时,我得到:</p>
<pre><code>[pol@UNKNOWN example_3.1]$ python example3.1.py
name,nationality,sex,category,year
Albert Einstein,German,male,Physics,1921
Paul Dirac,British,male,Physics,1933
Marie Curie,Polish,female,Chemistry,1911
[pol@UNKNOWN example_3.1]$
</code></pre>
<p>也就是说,每一行之间都有空格(我不想要)。作者<strong>特别提到了这里末尾的逗号(代码的最后一行)<strong>print(行),</strong>在print函数调用后添加逗号会禁止添加不必要的换行符。你知道吗</p>
<p>显然,它不是。如果我去掉逗号,我会得到相同的结果,即打印输出中的空格。你知道吗</p>
<p>我想知道:</p>
<ol>
<li><p>如何获得“干净”的打印输出-即没有空行,并且</p></li>
<li><p>一些关于作者试图做什么的见解-这个逗号“把戏”应该做什么?它应该怎么工作?</p></li>
</ol>
<h2>B部分-较小的点,但好奇的所有相同</h2>
<p>如果我取消注释分类()行,我明白了:</p>
<p>你知道吗[pol@未知示例\u 3.1]$python示例3.1.py
回溯(最近一次呼叫):
文件“example3.1.py”,第20行,in
分类()#<;<;==这会产生一个错误-请参阅下面的
AttributeError:“dict\u keys”对象没有“sort”属性</p>
<p>现在,我甚至不明白作者在说什么</p>
<ol>
<li><p>他为什么要用一种不存在的方法?</p></li>
<li><p>即使它确实起作用了,关键是——他只会让列标题与他的数据不同步?</p></li>
</ol>
<p>感谢您的解释。你知道吗</p>