Python 在行和列中写入csv

Python 在行和列中写入csv,python,list,csv,dictionary,writer,Python,List,Csv,Dictionary,Writer,我差一点就要完成了,但我无法解决这个问题。 我正在写csv,我的代码一直给我这个输出 dict,a,b,c,d ,,,, list,1,2,3,4 我希望它如下所示: dict, list a,1 b,2 c,3 d,4 代码是: ##Opening my dictionary .cvs file with open('some_file.csv', mode='r') as infile: reader = csv.reader(infile

我差一点就要完成了,但我无法解决这个问题。 我正在写csv,我的代码一直给我这个输出

 dict,a,b,c,d
 ,,,,
 list,1,2,3,4
我希望它如下所示:

 dict, list
 a,1
 b,2
 c,3
 d,4
代码是:

    ##Opening my dictionary .cvs file
    with open('some_file.csv', mode='r') as infile:
        reader = csv.reader(infile,)
        DICT = {rows[0]:rows[1] for rows in reader if len(rows) == 2}

    ##Opening my enquiry list .cvs file
    datafile = open(self.filename, 'r')
    datareader = csv.reader(datafile)
    n1 = []
    for row in datareader:
        n1.append(row)

        n = list(itertools.chain(*n1))

    headings = ['dict', 'list']

    ##Writing to .cvs file       
    with open(asksaveasfilename(), 'w') as fp:
        a = csv.writer(fp)
        # write row of header names
        a.writerow(n)

        # build up a list of the values in DICT corresponding to the keys in n
        values = []
        for name in n:
            if name in DICT:
                values.append(DICT[name])
            else:
                values.append("Not Available")

        # now write them out
        a.writerow(values)
我尝试使用
writerows
,但这也打印了错误的数据

d,i,c,t
a
b
c
d
l,i,s,t
1
2
3
4

解决方案:

    for nameValueTuple in zip(n,values):
    a.writerow(nameValueTuple)

这个技巧是不是自从我使用python以来已经很久了(我假设变量'values'是一个数组)

我认为你的作品应该是这样的

#not sure about the syntax, mate...
a.writerow([for x in values])
否则使用Bultinin函数


希望这有帮助……

我已经很久没有使用python了(我假设变量'values'是一个数组)

我认为你的作品应该是这样的

#not sure about the syntax, mate...
a.writerow([for x in values])
否则使用Bultinin函数

希望这有助于…

直接写入数据 这将导致
try.csv
包含:

dict,list
2,4
5,25
99,Not Available
3,9
首先执行处理,然后写入已处理的行: 您还可以一次完成处理并写入所有内容:

import csv

DICT = {a:a*a for a in [1,2,3,4,5,6]}
ns = [2,3,99,5]

headings = ['dict', 'list']

ns_squared = [DICT[name] if name in DICT else "NOT_FOUND" for name in names]

print(ns_squared) #=> [4, 9, 'NOT_FOUND', 25]

rows = zip(ns,ns_squared)

with open("try.csv", 'w') as fp:
  a = csv.writer(fp)
  a.writerow(headings)
  a.writerows(rows)
这将导致:

dict,list
2,4
3,9
99,NOT_FOUND
5,25
使用zip将列转换为行 如果列作为列表,可以使用
zip()
builtin函数将这些列转换为行。例如:

>>> column1 = ["value", 1, 2, 3, 4]
>>> column2 = ["square", 2, 4, 9, 16]
>>> zip(column1,column2)
[('value', 'square'), (1, 2), (2, 4), (3, 9), (4, 16)]
直接写入数据 这将导致
try.csv
包含:

dict,list
2,4
5,25
99,Not Available
3,9
首先执行处理,然后写入已处理的行: 您还可以一次完成处理并写入所有内容:

import csv

DICT = {a:a*a for a in [1,2,3,4,5,6]}
ns = [2,3,99,5]

headings = ['dict', 'list']

ns_squared = [DICT[name] if name in DICT else "NOT_FOUND" for name in names]

print(ns_squared) #=> [4, 9, 'NOT_FOUND', 25]

rows = zip(ns,ns_squared)

with open("try.csv", 'w') as fp:
  a = csv.writer(fp)
  a.writerow(headings)
  a.writerows(rows)
这将导致:

dict,list
2,4
3,9
99,NOT_FOUND
5,25
使用zip将列转换为行 如果列作为列表,可以使用
zip()
builtin函数将这些列转换为行。例如:

>>> column1 = ["value", 1, 2, 3, 4]
>>> column2 = ["square", 2, 4, 9, 16]
>>> zip(column1,column2)
[('value', 'square'), (1, 2), (2, 4), (3, 9), (4, 16)]


请告诉我们在代码片段中的第一个for循环之后,
n1
n
是什么样子。Brice,我添加了更多代码,请参见上文,希望这能有所帮助。我更想知道的是内容,而不是如何获取数据。为什么不在写入cvs文件之前打印出
n
?嗨,如果我在执行过程中打印n,我会得到以下结果:['dict',a',b',c',d']。这有助于澄清吗?干杯,看看我的答案。我想这就是你想要的。让我知道:)请告诉我们在代码片段中的第一个for循环之后,
n1
n
是什么样子。Brice,我添加了更多代码,请参见上文,希望这能有所帮助。我更想知道的是内容,而不是如何获取数据。为什么不在写入cvs文件之前打印出
n
?嗨,如果我在执行过程中打印n,我会得到以下结果:['dict',a',b',c',d']。这有助于澄清吗?干杯,看看我的答案。我想这就是你想要的。让我知道:)谢谢。。。我将研究使用“zip”。。。谢谢你!知道了。我在上面的代码中添加了我的解决方案。使用了ZIPhandy函数,不是吗…很高兴它帮助了HNX。。。我将研究使用“zip”。。。谢谢你!知道了。我在上面的代码中添加了我的解决方案。使用了ZIPhandy函数,不是吗…很高兴它帮助了我们,非常棒,并且按照您所说的工作。尽管我有一个问题,那就是dict是一个字典,我正在使用循环列表来检查dict中是否存在键,然后在两列中返回列表项和dict中键的值。这有道理吗?有道理,但我不知道你为什么会有麻烦。上面的解决方案不是创建数据结构,而是将行直接写入输出。给我一秒钟,我将添加另一个,它首先创建值,然后将它们写出,以显示…@gJg Done。这就是你想要的吗?让我检查一下,我会给你建议的。你问我为什么有麻烦。。。我前妻叫我白痴。。也许这就是为什么:)谢谢你,布莱斯!!知道了。我在上面的代码中添加了我的解决方案。使用Zippletty真棒,正如你所说。尽管我有一个问题,那就是dict是一个字典,我正在使用循环列表来检查dict中是否存在键,然后在两列中返回列表项和dict中键的值。这有道理吗?有道理,但我不知道你为什么会有麻烦。上面的解决方案不是创建数据结构,而是将行直接写入输出。给我一秒钟,我将添加另一个,它首先创建值,然后将它们写出,以显示…@gJg Done。这就是你想要的吗?让我检查一下,我会给你建议的。你问我为什么有麻烦。。。我前妻叫我白痴。。也许这就是为什么:)谢谢你,布莱斯!!知道了。我在上面的代码中添加了我的解决方案。旧拉链