[英]How can I write this format of a dictionary into a csv?
我正在努力将这种格式的字典写入 csv。 我能够正确填充所有 CSV 列,但是我无法使用正确的数据填充最后一列。
{
'file.txt':
[
'Bot2',
{
'0000022059191883 ': 'NOT_ONLINE',
'0000008352872313 ': 'true : '
}
]
}
我曾尝试使用此代码写入 CSV,正如前面提到的最后一列不正确。
for key in info_dict:
for power_time_stamp in info_dict[key][1]:
string = key + ',' +
info_dict[key][0] + ',' +
power_status + ',' +
power_time_stamp + ',' +
vertical_status + ',' +
vertical_time_stamp + '\n'
f.write(string)
我知道我缺少一个用于将vertical_time_stamp
写入 CSV 的循环,主要是因为我不确定如何正确构建循环。
编辑:
csv_columns = [
'File_Name',
'Bot_#',
'Power Status',
'Power_Time_Stamp',
'Vertical_Status',
'Vertical_Time_Stamp'
]
关于基于字典打印示例映射列:
Filename : file.txt
Bot # : Bot2
Power Status: NOT_ONLINE
Power Time Stamp : 0000022059191883
Vetical Status : true :
Vertical Time Stamp : 0000008352872313
尝试保留尽可能多的原始代码
for file_name, record in info_dict.items():
bot_id = record[0]
power_time_stamps, vertical_time_stamp = record[1].keys()
power_status, vertical_status = record[1].values()
string = file_name + ', ' + ', ' + power_status + ', ' + power_time_stamp + ', ' + vertical_status + ', ' + vertical_time_stamp + '\n'
f.write(string)
为了更好的可读性和性能,我们可以使用join
代替连接,字符串也不是最好的变量名:
row = ", ".join([file_name, bot_id, power_status, power_time_stampt, vertical status, vertical_time_stamp])
请注意,只有最新版本的 python 才能保证字典中键的顺序,对于早期版本,您需要检查类型以区分垂直和功率数据。 您也可以使用 csv 模块写入 csv 文件(检查另一个答案)。
我从 Serge 的回答中获取并使用标准库csv
模块发布了一个替代版本:
import csv
info_dict = { 'file.txt': [
'Bot2', {
'0000022059191883 ': 'NOT_ONLINE',
'0000008352872313 ': 'true : '
}
]}
headers = [
'File Name',
'Bot #',
'Power Status',
'Power Timestamp',
'Vertical Status',
'Vertical Timestamp'
]
with open('file.csv', 'w') as f:
writer = csv.writer(f, csv.QUOTE_ALL)
writer.writerow(headers)
for fname in info_dict:
bot_id, rec = info_dict[fname]
timestamps = rec.keys()
statuses = rec.values()
writer.writerow([
fname,
bot_id,
statuses[0],
timestamps[0],
statuses[1],
timestamps[1]
])
虽然它没有经过测试。 我假设 Serge 的代码使用正确的值填充变量。
这里的目标是展示如何消除字符串连接以及如何使用csv
模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.