python将来自cs的多个字段条目配对

2024-09-24 04:21:34 发布

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

尝试从csv获取数据,如下所示:
col1 col2
eggs sara
bacon john
ham betty

每列中的项目数可能不同,也可能不同。Col1可能有25个,col2可能有3个。或者相反,或多或少

循环遍历每个条目,使其输出成为如下文本文件

早餐1
早餐项目鸡蛋
个人萨拉

早餐2
早餐项目培根
个人萨拉

早餐3
早餐项目火腿
个人萨拉

早餐4
早餐项目鸡蛋
人约翰

早餐5
早餐项目培根
人约翰

早餐6
早餐项目火腿
人约翰

早餐7
早餐项目鸡蛋
人物贝蒂

早餐8
早餐项目培根
人物贝蒂

早餐9
早餐项目火腿
人物贝蒂

因此脚本需要添加“早餐”编号并循环遍历每个早餐项目和人员。 我知道如何创建一个组合,但不知道如何配对每个循环? 任何关于如何做到这一点的提示都会非常有用


Tags: csv项目john鸡蛋eggscol2col1ham
3条回答

如果我正确理解您的问题,您可以这样做(从列中获取值之后,我猜您知道如何做):

from itertools import product
with open('file.txt', 'w') as f:
    for i, pair in enumerate(product(your_csv_col1, your_csv_col2)):
        f.write('breakfast_%i\nbreakfast_item %s\nperson %s\n\n' % (i, pair[0], pair[1]))

我必须指出,由于你的输入数据结构不合理,你的问题变得更加困难。.csv文件中的一行表示该行中的数据项之间存在某种连接。但是你在两个完全不同的领域里阅读。那应该是两个文件。但是:

import csv

food_items = []
guests = []
with open('data.csv') as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        if row['col1']:
            food_items.append(row['col1'])
        if row['col2']:
            guests.append(row['col2'])

breakfast = 0
for guest in guests:
    for food_item in food_items:
        breakfast += 1
        print (f"breakfast_{breakfast}\nbreakfast_item {food_item}\nperson {guest}\n")

编辑:替代print调用python2.7或3.5

        print ("breakfast_{0}\nbreafast_item {1}\nperson {2}\n".format(breakfast,food_item,guest))

首先,对所有早餐项目进行分类

下面的伪代码

遍历每行 在两个不同的列表中收集项目和人员 在那两张单子上做一组 说人,说物品 Counter = 1 for person in persons: for item in items: Print "breafastitem", Counter Print person, item

相关问题 更多 >