首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyschool主题13 q 9 csv.writer

Pyschool主题13 q 9 csv.writer
EN

Stack Overflow用户
提问于 2012-05-18 02:32:00
回答 2查看 577关注 0票数 1

我为这个练习提出了两种不同的功能。一个使用csv类编写器,另一个使用DictWriter类。它们都通过了所列的预期结果,但是它们都失败了吗?

代码语言:javascript
复制
import csv
def csvWriter(filename, records): 
    header = []
    for i in records:
        if len(i) < 1:
          records.remove(i)
    for i in records:
        for v in i:
          if v not in header:
            header.append(v)
    for i in records:
        if len(i) == 0:
            return '0 records processed.'
    test=open(filename,'w') 
    wr = csv.writer(test,header,lineterminator='\n')
    wr.writerow(header)
    for i in records:
        wr.writerow(i.values())
    test.close()
    return '%d records processed.' % len(records)

csvWriter(文件名,{'a':1,'b':2},{'a':3,'b':4}

(打开(‘filename’).read())- 'a,b\n2,\na,b\n3,4‘check

“2条记录通过了”

私人测试用例-->失败?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-22 19:16:39

这个函数在私有测试用例上失败的原因是,可以传递第二个参数,并且不需要排序就可以写入值。

代码语言:javascript
复制
import csv
def csvWriter(filename, records): 
  header = []
  for i in records:
    if len(i) < 1:
      records.remove(i)
  for i in records:
    for v in i:
      if v not in header:
        header.append(v)
  for i in records:
    if len(i) == 0:
      return '0 records processed.'
  test=open(filename,'w') 
  dict_wr = csv.DictWriter(test,header,lineterminator='\n')
  dict_wr.writerow(dict(zip(header,header)))
  for i in records:     
  # Adding in the **sorted** built-in fixed it
    dict_wr.writerow(dict(zip(header,sorted(i.values()))))  
  test.close()
  return '%d records processed.' % len(records)

仍然很粗糙,我们也不应该使用csv模块。我将回到改进这一点,并给它一个尝试没有模块。

有什么建议吗?

票数 1
EN

Stack Overflow用户

发布于 2020-08-05 20:01:58

进口csv

def csvWriter(文件名,记录):

代码语言:javascript
复制
header = []

f = []
with open(filename, 'w')as new_file:

    csv_writer = csv.writer(new_file,header,lineterminator='\n')

    for line in records:
        if line not in header:
            header.append(sorted(line))
            header.append(sorted(line.values()))
            for x in header:
                if x not in f:
                    f.append(x)
                    csv_writer.writerow(x)
return '%s records processed.' % len(records)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10646012

复制
相关文章

相似问题

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