首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >导出未完成

导出未完成
EN

Stack Overflow用户
提问于 2012-10-19 20:24:17
回答 1查看 74关注 0票数 0

这是我的脚本:

代码语言:javascript
运行
复制
from itertools import groupby
import operator
import csv

l = [['Cautus  B.V.', 'Cautus  B.V.plein 92', 'plein 92', '1129008', '10', 'AVB', 'Geachte mevrouw Daa', 'Mevrouw C.P. Daa', 'admin@planet.nl'] ,
['Cautus  B.V.', 'Cautus  B.V.Wei 9-11', 'Wei 9-11', '1019123', '10', 'AVB', 'Geachte mevrouw Daa', 'Mevrouw C.P. Daa', 'admin@planet.nl'] ,
['Cautus  B.V.', 'Cautus  B.V.plein 92', 'plein 92', '1129008', '10', 'BEDR', 'Geachte mevrouw Daa', 'Mevrouw C.P. Daa', 'admin@planet.nl'] ,
['Cautus  B.V.', 'Cautus  B.V.Wei 9-11', 'Wei 9-11', '1019123', '10', 'BEDR', 'Geachte mevrouw Daa', 'Mevrouw C.P. Daa', 'admin.@planet.nl'] ,
['De company', 'De companytiellaan 42', 'tiellaan 42', 'KD0022232', '13', 'AVB', 'Geachte heer Tigch', 'De heer I. Tigch', 'imre@company.nl'] ,
['De company', 'De companytiellaan 42', 'tiellaan 42', 'KD0022232', '13', 'DAS', 'Geachte heer Tigch', 'De heer I. Tigch', 'imre@company.nl'] ,
['Slever ', 'Slever klopt 42', 'klopt 42', 'KD2220115', '17', 'AVB', 'Geachte heer Slever', 'De heer T. Slever', 'info@company.com']]

sortkey = operator.itemgetter(1,5)
l_clean = sorted(l,key=sortkey)
l_final = [(k, list(v)) for k,v in groupby(l_clean, key = operator.itemgetter(1))]

for k,v in l_final:
   info_rest = v[0][:5]+v[0][5:]
   info_combine = map(operator.itemgetter(5),v)
   uniekid = k
   verz = info_combine
   naam = 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 = [uniekid,naam,verz,risicoadr,polisnummer,relatienummer,aanhef,contactpersoon,emailadr,]

import csv
   with open('export.csv', 'w') as f:
       writer = csv.writer(f)
       writer.writerows(klantgegevens)

当我写的时候,我会在我的.csv文件中得到这样的结果:

代码语言:javascript
运行
复制
S   l   e   v   e   r       k   l   o   p   t       4   2

如你所见,他只在里面写了一个街名。

有谁能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-19 20:36:45

您只有一个列表(在每个循环上重置klantgegevens ),并且编写该列表时就好像它是一组完整的多行。

CSV模块将该列表视为一组序列,这意味着每个字符串条目都被视为单个字符的序列,这就是随后写入csv文件的内容:

代码语言:javascript
运行
复制
>>> klantgegevens
['Slever klopt 42', 'Slever ', ['AVB'], 'klopt 42', 'KD2220115', '17', 'Geachte heer Slever', 'De heer T. Slever', 'info@company.com']
>>> list(klantgegevens[0])
['S', 'l', 'e', 'v', 'e', 'r', ' ', 'k', 'l', 'o', 'p', 't', ' ', '4', '2']

在收集klantgegevens列表时,您可以单独编写每一行:

代码语言:javascript
运行
复制
import csv
with open('export.csv', 'w') as f:
    writer = csv.writer(f)
    for k,v in l_final:
       info_rest = v[0][:5]+v[0][5:]
       info_combine = map(operator.itemgetter(5),v)
       uniekid = k
       verz = info_combine
       naam = 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 = [uniekid,naam,verz,risicoadr,polisnummer,relatienummer,aanhef,contactpersoon,emailadr,]
       writer.writerow(klantgegevens)

现在,该列表将被视为一系列列,并在完成时写入每一行。

或者,您必须将每个klantgegevens列表收集到一个结果列表中:

代码语言:javascript
运行
复制
results = []    
for k,v in l_final:
    # processing
    klantgegevens = [uniekid,naam,verz,risicoadr,polisnummer,relatienummer,aanhef,contactpersoon,emailadr,]
    results.append(klantgegevens)

然后将该列表写入您的CSV文件:

代码语言:javascript
运行
复制
import csv
with open('export.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerows(results)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12974253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档