python编写一个字典,其中的值是csv中不带括号的整数列表

2024-09-28 19:11:17 发布

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

脚本读取包含错误消息的文件syslog.log,对其进行解析,构建字典,然后将字典写入user_statistics.csv文件

我想写key:list中的整数,不带括号、引号或空格

#!/usr/bin/python3
import csv


per_user = {'noel': [2, 2], 'mcintosh': [2, 1], 'enim.non': [1, 1], 'oren': [0, 2], 'bpacheco': [0, 1], 'mdouglas': [0, 1], 'ac': [1, 0], 'blossom': [0, 1]}

with open('user_statistics.csv', 'w') as csvfile1:
        y = csv.writer(csvfile1)  
        y.writerow(['Username', 'INFO', 'ERROR'])
        y.writerows(per_user.items())

用户_statistics.csv中接收到的输出

Username,INFO,ERROR
ac,"[1, 0]"
blossom,"[0, 1]"
bpacheco,"[0, 1]"
enim.non,"[1, 1]"
mcintosh,"[2, 1]"
mdouglas,"[0, 1]"
oren,"[0, 2]"

期望输出为

Username,INFO,ERROR
ac,1,0
blossom,0,
bpacheco,0,1
enim.non,1,1
mcintosh,2,1
mdouglas,0,1
oren,0,2

Tags: 文件csvinfousernameerroracstatisticsnon
2条回答

你只需要做一些事情,比如:

import csv


per_user = {'noel': [2, 2], 'mcintosh': [2, 1], 'enim.non': [1, 1], 'oren': [0, 2], 'bpacheco': [0, 1], 'mdouglas': [0, 1], 'ac': [1, 0], 'blossom': [0, 1]}

with open('user_statistics.csv', 'w') as csvfile1:
    writer = csv.writer(csvfile1)  
    writer.writerow(['Username', 'INFO', 'ERROR'])
    for name, (info, error) in per_user.items():
        writer.writerow([name, info, error])

带pandas的解决方案(而不是第二个with语句)

import pandas as pd

keys = per_user.keys()
values = per_user.values()
df_keys = pd.DataFrame(keys, columns=['Username'])
df_values = pd.DataFrame(values, columns=['INFO', 'ERROR'])
data = df_keys.join(df_values)
data.to_csv("user_statistics.csv", index=False)

产出:

Username,INFO,ERROR
ac,1,0
blossom,0,1
bpacheco,0,1
enim.non,1,1
mcintosh,2,1
mdouglas,0,1
oren,0,2

相关问题 更多 >