0

我有代码在第 1、2 和 3 列中重复写入我的列表(3 项),并在 csv 中重复:

list = [13243, 3452345, 234234]

def listplace(in_path):
    file_obj = open(in_path, 'wb')
    writer = csv.writer(file_obj)

    for row in in_path:
        for column in row:
            writer.writerows([list])


    file_obj.close()

这是输出,它覆盖了我需要保留在第 1 列中的信息:

13243   3452345 234234
13243   3452345 234234
13243   3452345 234234
13243   3452345 234234
13243   3452345 234234
13243   3452345 234234

我想将此作为输出(迭代每个项目,直到第 1 列中没有更多信息,并带有标题):

Header  Header
info    13243
info    3452345
info    234234
info    13243
info    3452345
info    234234
info    13243
info    3452345
info    234234
info    13243
info    3452345
info    234234
info    13243

这需要迭代循环吗?如果是这样,我如何从第 2 行第 2 列开始?

4

2 回答 2

0

用于itertools.cycle()重复某些信息。您也可以使用itertools.izip()将重复列与为第一列产生值的任何内容配对:

from itertools import izip, cycle

def listplace(in_path):
    with open(in_path, 'wb') as file_obj:
        writer = csv.writer(file_obj)

        for row in izip(info_source, cycle([13243, 3452345, 234234])):
            writer.writerow(row)

现在每个row都是来自 的元素,与或info_source配对13243,循环直到用尽。3452345234234info_source

于 2013-10-21T20:12:28.000 回答
0

in_path你的代码在写入时迭代行对我来说没有意义吗?即使这是您想要做的,它也只能让您在重新创建源文件之前测试输入。

如果您有一个输入文件,其中仅包含行object,并且想要将您的三个值写入旁边的列中,object则可以执行以下操作:

def listplace(in_path):
    with open(in_path, 'r') as file_obj:
        with open(out_path,'wb') as output_obj:
            writefile = csv.writer(output_obj)
            val_list = [13243, 3452345, 234234]  # don't use "list" as a var name

            # iterate over rows in input file, not output file...

            for i,row in enumerate(file_obj):
                 obj_col = split(row)[0].rstrip() # whatever that object value might be

                 selected_val = val_list[i%3]    # use the remainder to select from list

                 writefile.writerow([obj_col,selected_val])     

您将必须定义in_pathout_path...

这使用该mod操作来获取0,1,2文件中的每一行。

于 2013-10-21T21:45:14.853 回答