使用DictReader读取一行csv文件(如果可以的话,基于输入),然后格式化并写入新文件



我正在尝试读取包含许多行和列的csv文件;我想以特定格式将一行打印到文本文件中,并对值进行一些哈希处理。到目前为止,我已经能够读取文件,使用 DictReader 解析它,使用 IF 语句找到我想要的行,然后打印键和值。我无法弄清楚如何最终将其格式化为我想要的格式(键 = 值 (,并且我无法弄清楚如何使用下面获得的"row"值写入文件(更不用说我想要的格式了(。我已经尝试了几天,取得了一点进展,但无法让它发挥作用。这是我的工作(结果中遗漏了很多细节(:


>>>import csv
with open("C:path_to_scriptfilename_Brief.csv") as infh:
    reader = csv.DictReader(infh)
    for row in reader:
        if row['ALIAS'] == 'Y4K':
            print(row)

结果输出

{'Full_Name': 'Jack Flash', 'PHONE_NO': '555

555-1212', 'ALIAS': 'Y4K'}


我想要求用户输入别名,然后使用它来确定要打印的行。我已经做了大量的研究,但对 Python 很陌生,所以我寻求帮助!我用过pyexcel,xlrd/xlwt,甚至想过我会尝试熊猫,但太多了,无法学习。我还让它在一次测试中以我想要的方式格式化,但随后无法让行选择工作——换句话说,它打印所有记录而不是我想要的行。打开 30 个 Firefox 标签,试图找到答案!提前感谢!

以下内容可能至少接近您想要的(我认为(:

import csv
with open(r'C:path_to_scriptfilename_Brief.csv') as infh, 
     open('new_file.txt', 'wt') as outfh:
    reader = csv.DictReader(infh)
    for row in reader:
        if row['ALIAS'] == 'Y4K':
             outfh.write('Full_Name = {Full_Name}n'
                         'PHONE_NO = {PHONE_NO}n'
                         'ALIAS = {ALIAS}n'.format(**row))

这会将 3 行格式化如下的行写入每个匹配row的输出文件中:

Full_Name = Jack Flash 
PHONE_NO = 555 555-1212
ALIAS = Y4K            

顺便说一句,**row表示法基本上意味着"获取指定字典中的所有条目并将它们转换为此函数调用的关键字参数"。格式字符串中的{keyword}语法引用将传递给 str.format() 方法的任何关键字参数。

相关内容

最新更新