Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用itertools(python)处理csv中的数据_Python_Itertools - Fatal编程技术网

使用itertools(python)处理csv中的数据

使用itertools(python)处理csv中的数据,python,itertools,Python,Itertools,我正试图在下面的代码中添加一个功能,但似乎有点搞砸了 下面的代码基本上重复了下面每个发言者的第一个“z”表列(如excel换位)。对于这些列,“z”之后是日期,只需要一个日期列 问题是python脚本生成了这些值​​正确但需要插入关于日期的列,对所有值重复此信息​​那一天 Python脚本: from itertools chain from import f = open ("C:\\Test.CSV", "r") sep = "" M = [] M = [M + [s.strip () f

我正试图在下面的代码中添加一个功能,但似乎有点搞砸了

下面的代码基本上重复了下面每个发言者的第一个“z”表列(如excel换位)。对于这些列,“z”之后是日期,只需要一个日期列

问题是python脚本生成了这些值​​正确但需要插入关于日期的列,对所有值重复此信息​​那一天

Python脚本:

from itertools chain from import

f = open ("C:\\Test.CSV", "r")
sep = ""
M = []
M = [M + [s.strip () for s in line.split (sep)] for line in f.readlines ()]
f.close ()

i = 0 # title
w = 4 # cols in title
r = 1 # body
z = 4 # fields fix

result = [M [i] [w] + ["date"] + ["Value"]] + list (chain (* [[x [: z] + [y] for y in x [z + 1: ]] for x in M ​​[A:]]))

f = open ("C:\out.csv", 'w')
f.writelines ("\ n" .join ("". join (s) for s in result) + "\ 0")
f.close ()
某事(输入):

当前脚本正确执行此操作(立即输出):

我认为输出如下(期望输出):


有人做过类似的事情吗?

有什么原因不能只使用csv吗

import csv

f = open("iter.csv", "r")
g = open("out.csv", "w", newline="")
transpose_columns = ['date1', 'date2', 'date3']
target_columns = ['date', 'value']
reader = csv.DictReader(f)
writer = csv.DictWriter(g, fieldnames=[a for a in reader.fieldnames
                                       if a not in transpose_columns] + target_columns,
                        extrasaction='ignore')
writer.writeheader()
for row in reader:
    for col in transpose_columns:
        row[target_columns[0]] = col
        row[target_columns[1]] = row[col]
        writer.writerow(row)
f.close()
g.close()

非常感谢你的帮助!我对改进脚本的反馈:1)摘录:newline=”“出现错误,必须排除2)最后两列在导出中重复出现3)导出它跳过一行(一行带有信息,另一行为空,可能是因为排除点(1)再次感谢您,我发现csv包比intertools@user1146在我的手机上,测试某些东西有点困难,但新行=“”是Python3的一部分。这是由于一个错误,这就是为什么它在Python2中给出一个错误,然后在csv中给您一个额外的行。代码工作得非常完美,并且以一种比我使用的工具更简单的方式工作,谢谢!
[[X; y; date1]
[01; 02; 03]
[01; 02; 04]
[01; 02; 05]
[06; 07; 08]
[06; 07; 09]
[06; 07; 10]
[11; 12; 13]
[11; 12; 14]
[11; 12; 15]]
[[X; y; date; value; ]
[01; 02; date1; 03]
[01; 02; date2; 04]
[01; 02; date3; 05]
[06; 07; date1; 08]
[06; 07; date2; 09]
[06; 07; date3; 10]
[11; 12; date1; 13]
[11; 12; date2; 14]
[11; 12; date3; 15]]
import csv

f = open("iter.csv", "r")
g = open("out.csv", "w", newline="")
transpose_columns = ['date1', 'date2', 'date3']
target_columns = ['date', 'value']
reader = csv.DictReader(f)
writer = csv.DictWriter(g, fieldnames=[a for a in reader.fieldnames
                                       if a not in transpose_columns] + target_columns,
                        extrasaction='ignore')
writer.writeheader()
for row in reader:
    for col in transpose_columns:
        row[target_columns[0]] = col
        row[target_columns[1]] = row[col]
        writer.writerow(row)
f.close()
g.close()