<p>对于这种特殊情况,<code>R</code>中的<code>paste</code>运算符最接近Python的<a href="http://docs.python.org/2/library/string.html#formatstrings" rel="noreferrer">^{<cd3>}</a>,后者是在Python 2.6中添加的。它比老的<code>%</code>操作程序更新,而且更灵活。</p>
<p>对于一个不使用numpy或pandas的纯Python ic答案,这里有一种方法可以使用列表形式的原始数据(这也可以作为dict列表来完成,但对我来说似乎更混乱)。</p>
<pre><code># -*- coding: utf-8 -*-
names=['categorie','titre','tarifMin','lieu','long','lat','img','dateSortie']
records=[[
'zoo', 'Aquar', 0.0,'Aquar',2.385,48.89,'ilo',0],[
'zoo', 'Aquar', 4.5,'Aquar',2.408,48.83,'ilo',0],[
'lieu', 'Jardi', 0.0,'Jardi',2.320,48.86,'ilo',0],[
'lieu', 'Bois', 0.0,'Bois', 2.455,48.82,'ilo',0],[
'espac', 'Canal', 0.0,'Canal',2.366,48.87,'ilo',0],[
'espac', 'Canal', -1.0,'Canal',2.384,48.89,'ilo',0],[
'parc', 'Le Ma', 20.0,'Le Ma', 2.353,48.87,'ilo',0] ]
def prix(p):
if (p != -1):
return 'C partir de {} €uros'.format(p)
return 'sans prix indique'
def msg(a):
return 'Evenement permanent --> {}, {} {}'.format(a[0],a[1],prix(a[2]))
[m.append(msg(m)) for m in records]
from pprint import pprint
pprint(records)
</code></pre>
<p>结果是:</p>
<pre><code>[['zoo',
'Aquar',
0.0,
'Aquar',
2.385,
48.89,
'ilo',
0,
'Evenement permanent --> zoo, Aquar C partir de 0.0 \xe2\x82\xacuros'],
['zoo',
'Aquar',
4.5,
'Aquar',
2.408,
48.83,
'ilo',
0,
'Evenement permanent --> zoo, Aquar C partir de 4.5 \xe2\x82\xacuros'],
['lieu',
'Jardi',
0.0,
'Jardi',
2.32,
48.86,
'ilo',
0,
'Evenement permanent --> lieu, Jardi C partir de 0.0 \xe2\x82\xacuros'],
['lieu',
'Bois',
0.0,
'Bois',
2.455,
48.82,
'ilo',
0,
'Evenement permanent --> lieu, Bois C partir de 0.0 \xe2\x82\xacuros'],
['espac',
'Canal',
0.0,
'Canal',
2.366,
48.87,
'ilo',
0,
'Evenement permanent --> espac, Canal C partir de 0.0 \xe2\x82\xacuros'],
['espac',
'Canal',
-1.0,
'Canal',
2.384,
48.89,
'ilo',
0,
'Evenement permanent --> espac, Canal sans prix indique'],
['parc',
'Le Ma',
20.0,
'Le Ma',
2.353,
48.87,
'ilo',
0,
'Evenement permanent --> parc, Le Ma C partir de 20.0 \xe2\x82\xacuros']]
</code></pre>
<p>请注意,虽然我定义了一个列表<code>names</code>,但实际上并没有使用它。我们可以定义一个字典,其中标题的名称是键,字段号(从0开始)是值,但我不想费心让示例变得简单。</p>
<p>函数<code>prix</code>和<code>msg</code>相当简单。唯一棘手的部分是列表理解<code>[m.append(msg(m)) for m in records]</code>,它遍历所有记录,并修改每个记录以附加通过调用<code>msg</code>创建的新字段。</p>