如何用新行将默认字典值写入文件?

2024-09-30 01:22:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下默认字典。我正在尝试将字典的值写入文件。但它只写了一行字。我想在每个项目后添加新行字符。帮忙吗?在

defaultdict(<type 'list'>, {'11163722404385': [('#3\n', '2089', '', '', '', 'Con  verted', '', '', '', 'Mon Apr 22 13:32:00 PDT 2013', 'UNATT')], '1116372240485':
 [('#3\n', '2089', '', '', '', 'Converted', '', '', '', 'Mon Apr 22 13:31:00 PDT
 2013', 'UNATT'), ('#3\n', '2089', '', '', '', 'Converted', '', '', '', 'Mon Apr
 22 13:31:14 PDT 2013', 'UNATT'), ('#3\n', '2089', '', '', '', 'Converted', '',
'', '', 'Mon Apr 22 13:32:00 PDT 2013', 'UNATT')]})

accounts = defaultdict(list)
with open('C:\fileReport.txt', 'a') as csvoutput:  
  writer = csv.writer(csvoutput)
  for sid,data1 in accounts.iteritems():
    report = [';'.join(items) for items in data1]
   print report
   finalReport = ['{},{}'.format(sid, ''.join(report))]
   writer.writerow(report)
   writer.writerow('\n')

Tags: reportfor字典aprlistwriterconvertedaccounts
2条回答

这有点混乱,而且您没有指定预期的输出。我想这是你想做的:

代码:

from collections import defaultdict

accounts = defaultdict(list)
accounts['11163722404385'] = [('a', 'list'),('another', 'list')]
accounts['1116372240485'] = [('one', 'more')]

with open(r'C:\temp\out.txt', 'a') as writer:
    for k,v in accounts.iteritems():
        csv = ';'.join([','.join(t) for t in v])
        writer.write("%s,%s\n" % (k, csv))

输出:

^{2}$

您可能需要重新考虑您的数据结构。在

听起来像是pprint的工作:

>>> from pprint import pprint
>>> pprint(accounts)
{'11163722404385': [('#3\n',
                     '2089',
                     '',
                     '',
                     '',
                     'Converted',
                     '',
                     '',
                     '',
                     'Mon Apr 22 13:32:00 PDT 2013',
                     'UNATT')],
 '1116372240485': [('#3\n',
                    '2089',
                    '',
                    '',
                    <etc.> ]}

相关问题 更多 >

    热门问题