csv文件包含以下内容:
Cautus Drogisterijen B.V.
Cautus Drogisterijen B.V.
Clever Franke
De Inrichting
Teva Pharmaceuticals Europe B.V.
名称从csv导入然后转换等。
我有以下脚本:
#Gegevens
l = (gegevens)
#script
#Welke sleutels moet hij pakken
sortkey = operator.itemgetter(1,5)
#De identieke sleutel selecteren
l_clean = sorted(l,key=sortkey)
#delijst maken
l_final = [(k, list(v)) for k,v in groupby(l_clean, key = operator.itemgetter(1))]
#importeer csv optie
import csv
#bestand kiezen
with open('export.csv', 'wb') as f:
#Write
writer = csv.writer(f)
#loop over de lijst
for k,v in l_final:
#welke gegevens hij moet tonen
info_rest = v[0][:5]+v[0][5:]
#combineerd de verzekeringen
info_combine = map(operator.itemgetter(5),v)
uniekid = k
verzl = info_combine
name = info_rest[0]
risicoadr = info_rest[2]
polisnummer = info_rest[3]
relatienummer = info_rest[4]
aanhef = info_rest[6]
contactpersoon = info_rest[7]
emailadr = info_rest[8]
klantgegevens = []
#lijst met alle gegevens
klantgegevens1 = [uniekid,naam,verz,risicoadr,polisnummer,relatienummer,aanhef,contactpersoon,emailadr]
klantgegevens.append (klantgegevens1)
for i, w in enumerate(name):
print (i,w)
#welke gegevens hij erin moet schrijven
writer.writerow(klantgegevens)
产生此输出:
(0, 'C')
(1, 'a')
(2, 'u')
(3, 't')
(4, 'u')
(5, 's')
(6, ' ')
(7, 'D')
(8, 'r')
(9, 'o')
(10, 'g')
(11, 'i')
(12, 's')
(13, 't')
(14, 'e')
(15, 'r')
(16, 'i')
(17, 'j')
(18, 'e')
(19, 'n')
(20, ' ')
(21, 'B')
(22, '.')
(23, 'V')
(24, '.')
(0, 'C')
(1, 'a')
(2, 'u')
(3, 't')
(4, 'u')
(5, 's')
(6, ' ')
(7, 'D')
(8, 'r')
(9, 'o')
(10, 'g')
...
正如你所看到的,他在名字中的每个字母上循环并给出了一个数字,但我想要的是我的输出看起来像这样:
(0, 'cautus drogisterij B.V.')
(1, 'cautus drogisterij B.V.')
每个名字都有一个数字。
答案 0 :(得分:3)
如果您的name
是list of names
,那么您的代码应该可以正常运行,前提是您没有其他循环包含该循环: -
此作品: -
>>> name = ['rohit', 'jain']
>>> for i,x in enumerate(name):
print (i, x)
(0, 'rohit')
(1, 'jain')
然而,这就是你得到的,你可能有一个外部循环,迭代列表: -
>>> name = ['rohit', 'jain']
>>> for name in name:
for i, x in enumerate(name):
print (i, x)
(0, 'r')
(1, 'o')
(2, 'h')
(3, 'i')
(4, 't')
(0, 'j')
(1, 'a')
(2, 'i')
(3, 'n')
更新: -
您的info_rest
实际上是一维名单: -
for k,v in l_final:
info_rest = v[0][:5]+v[0][5:]
上面的代码为您提供了二维列表v
的一维列表: -
>>> v = [['rohit', 'jain'], ['a', 'ab']]
>>> info_rest = v[0][:5]+v[0][5:]
>>> info_rest
['rohit', 'jain']
所以,当你说: -
name = info_rest[0]; # name contains 'rohit;
您的名字将包含字符串而不是列表。 - 在这种情况下'rohit'
所以,不要迭代你的名字: -
for i, w in enumerate(name):
print (i,w)
打印出来: -
print (k, name) # k is the index from outer loop
答案 1 :(得分:0)
你有一个外部循环遍历名称列表。因此,此当前循环遍历字符串name
。不幸的是,提供的代码太短,无法再瞥见。
编辑:来吧,你的评论显然是在说“循环过去”。只需移除整个for
- 循环,然后移除print(k, name)