我需要将多个元组分配给一个列表并编写一个CSV文件

vatpfxk5  于 5个月前  发布在  其他
关注(0)|答案(1)|浏览(70)

我想写一个程序,找到我收到的所有电子邮件的数量,以及给我发电子邮件的人的列表,并将其保存在一个文本和CSV文件中,该文件包含两列:发送电子邮件的人和电子邮件的时间。
我的问题是程序的输出给出了很多元组,我不能将此输出转换为CSV文件,包括两列电子邮件和时间。为了编写CSV文件,我需要将所有元组放在一个列表中

with open('../data/mbox-short.txt', 'r') as file_h:
    count = 0
    for line in file_h:
        if line.startswith('From '):
            word_list = line.split()
            Email = word_list[1:2]
            Hour = word_list[5:6]
            Email_Hour = tuple(Email + Hour)
            count = count +1
            print(Email_Hour)
    print(f'count = {count}')

字符串

db2dz4w8

db2dz4w81#

我会建议你沿着这条线:

import csv
with open('../data/mboxoutput.csv', 'w') as csvfile:
    csvwriter = csv.writer(csvfile)
    rows = []
    with open('../data/mbox-short.txt', 'r') as file_h:

        for line in file_h:
            if line.startswith('From '):
                word_list = line.split()
                rows.append([word_list[1:2], word_list[5:6]])

        print(f'count = {len(rows)}')
        csvwriter.writerows(rows)

字符串
这里的关键区别在于,只是将行放入一个列表列表中,CSV模块的.writerows()方法可以使用该列表。
这是一个小粘贴在一起,你可以在这里有一些列表理解的乐趣,也可以保存一些行,或者只是作为一个有趣的语法糖练习:

import csv
with open('../data/mboxoutput.csv', 'w') as csvfile:
    csvwriter = csv.writer(csvfile)
    rows = [[[word_list[1:2], word_list[5:6] for word_list in line]] for line in open('../data/mbox-short.txt', 'r').readlines() if line.startswith('From ')]

    print(f'count = {len(rows)}')
    csvwriter.writerows(rows)

相关问题