python - 一次遍历 Python 字典 N 项以进行 CSV 写入

标签 python csv dictionary

我有很多创建 CSV 文件的方法,这些方法开始让我觉得我真的在重复自己。这里有一对:

def genSmsOutputFile(self, smsDict):
    with open(settings.MEDIA_ROOT + 'smsOutput.csv', 'w+') as csvfile:
        writer = csv.writer(csvfile, delimiter=',')
        writer.writerow( ['電話番号','会員ID','TEL1','TEL2','TEL3','(ラベル無し)','(ラベル無し)','(ラベル無し)','(ラベル無し)','(ラベル無し)','(ラベル無し)','(ラベル無し)','(ラベル無し)','(ラベル無し)','(ラベル無し)','(ラベル無し)',] )
        for key, value in smsDict.items():
            phoneNumber = value[2] + value[3] + value[4]
            writer.writerow( [ phoneNumber, value[0], value[2], value[3], value[4],'','','','','','','','','','','',''] )
        return 'smsOutput.csv'

def genMailOutputFile(self, okMailMaga):
    with open(settings.MEDIA_ROOT + 'mailMagaOutput.csv', 'w+') as csvfile:
        writer = csv.writer(csvfile, delimiter=',')
        writer.writerow( [ '会員id','e-mail','お名前(姓)','お名前(名)','購入回数' ] )
        for key, value in okMailMaga.items():
            writer.writerow( [ value[0], value[1], value[2], value[3], value[4] ] )
        return settings.MEDIA_ROOT + 'mailMagaOutput.csv'

我正在努力创建函数 _writeOutputToFile(self, dictionary, columnNames):

但我发现自己陷入了如何写这行:

 writer.writerow([value[0], value[1], value[2], value[3], value[4]])

有没有办法在一次循环迭代中动态地从字典中获取 CSV 的整行

最佳答案

您可以连接列表以获得更大的列表。举个例子:

writer.writerow( [ phoneNumber, value[0], value[2], value[3], value[4],'','','','','','','','','','','',''] )

可能是:

writer.writerow([phoneNumber, value[0]] + value[2:5] + [''] * 12) 

关于python - 一次遍历 Python 字典 N 项以进行 CSV 写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48493279/

相关文章:

python - 在 python 3 中查看堆栈

python - 在 Traitsui GUI 之外更改属性

csv - Pig 使用 PigStorage 加载 map (',' )

python - 列表中是否有任何自引用列表或循环引用的用法,例如。将列表附加到自身

python - Precision_score和accuracy_score显示值错误

python - 从字典键及其值生成元组

python - Python 2.6 中对 csv 文件的通用 Unicode/UTF-8 支持

mysql - 将 Excel CSV 导入 MySQL 关系数据库?

python - 在 python 中遍历字典中的项目

c# - 序列化包含字典的对象,以便字典键/值呈现为包含对象的一部分