1

この演習では、2つの異なる関数を考え出しました。1つはcsvクラスライターを使用し、もう1つはDictWriterクラスを使用します。両方ともリストされた期待される結果に合格しますが、プライベートテストケースに失敗しますか?

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}]

repr(open('filename')。read())--->'a、b \ n1,2、\ na、b\n3,4'チェック

「2つのレコードが渡されました。」--->「2つのレコードが渡されました。」小切手

プライベートテストケース--->失敗しましたか?

4

2 に答える 2

1

この関数がプライベートテストケースで失敗した理由は、2番目の引数を渡すことができ、値が並べ替えられずに書き込まれるためです。

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モジュールを使用することも想定されていませんでした。これを改善するために戻って、モジュールなしで試してみます。

助言がありますか?

于 2012-05-22T19:16:39.763 に答える
0

csvをインポート

def csvWriter(filename、records):

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)
于 2020-08-05T20:01:58.833 に答える