Python CSV writerows在某些行之后

Python CSV writerows在某些行之后,python,python-3.x,csv,Python,Python 3.x,Csv,我有一个CSV,比如说2.CSV,在这里发布示例: ,ANPIS,,,,,,, ,AGENTIA JUDETEANA PENTRU PLATI SI INSPECTIE SOCIALA TIMIS,,,,,,, ,,,,,,,, ,Macheta Comparativa CREDITORI - numai pentru Beneficiile a caror Evidenta se tine si in Contabilitate si in aplicatia SAFIR,,,,,,, ,Si

我有一个CSV,比如说2.CSV,在这里发布示例:

,ANPIS,,,,,,,
,AGENTIA JUDETEANA PENTRU PLATI SI INSPECTIE SOCIALA TIMIS,,,,,,,
,,,,,,,,
,Macheta Comparativa CREDITORI - numai pentru Beneficiile a caror Evidenta se tine si in Contabilitate si in aplicatia SAFIR,,,,,,,
,Situatie ANALITICA - NOMINAL la 30.06.2017,,,,,,,
,8. INDEMNIZATIE ART. 31 SI ART. 32 OUG 111/2010,,,,,,,
,Nr. Benef,Nume Prenume,CNP,Data Constituirii,Suma Contabilitate,Suma SAFIR,Differenta Suma,Explicatii daca exista diferente
,1,2,3,4,5,6,7=5-6,8
,1,IONELA,2820,Mai/2017,3579,3579,0,
,2,GHEORGHE,18609,Februarie/2017,185,185,0,
,3,GHEORGHE,186091,Martie/2017,185,185,0,
,4,GHEORGHE,18609,Aprilie/2017,185,185,0,
我想用python 3重写一个列表列表,从第9行开始并保持前8行现在的状态,我读到next()可以跳过标题,我尝试如下:

import csv
with open("data//2.csv", "w") as f:
    writer = csv.writer(f)
    header = next(writer)
    writer.writerows(mylist)
mylist= [['AUGUSTIN', 14111, 'Mar 2016', 0, 600], ['AUGUSTIN', 1451, 'Feb 2015', 0, 600], ['IOAN', 1480, 'Aug 2014, Sept 2014, Oct 2014', 0, 291]]
,ANPIS,,,,,,,
,AGENTIA JUDETEANA PENTRU PLATI SI INSPECTIE SOCIALA TIMIS,,,,,,,
,,,,,,,,
,Macheta Comparativa CREDITORI - numai pentru Beneficiile a caror Evidenta se tine si in Contabilitate si in aplicatia SAFIR,,,,,,,
,Situatie ANALITICA - NOMINAL la 30.06.2017,,,,,,,
,8. INDEMNIZATIE ART. 31 SI ART. 32 OUG 111/2010,,,,,,,
,Nr. Benef,Nume Prenume,CNP,Data Constituirii,Suma Contabilitate,Suma SAFIR,Differenta Suma,Explicatii daca exista diferente
,1,2,3,4,5,6,7=5-6,8
,AUGUSTIN, 14111, Mar 2016, 0, 600,
,AUGUSTIN, 1451, Feb 2015, 0, 600,
,IOAN, 1480, Aug 2014, Sept 2014, Oct 2014, 0, 291,
但这将是一个叫喊:

TypeError:“_csv.writer”对象不是迭代器

如何从第8行之后开始编写我的列表(在我的情况下)?谢谢你抽出时间

编辑:我的列表将如下所示:

import csv
with open("data//2.csv", "w") as f:
    writer = csv.writer(f)
    header = next(writer)
    writer.writerows(mylist)
mylist= [['AUGUSTIN', 14111, 'Mar 2016', 0, 600], ['AUGUSTIN', 1451, 'Feb 2015', 0, 600], ['IOAN', 1480, 'Aug 2014, Sept 2014, Oct 2014', 0, 291]]
,ANPIS,,,,,,,
,AGENTIA JUDETEANA PENTRU PLATI SI INSPECTIE SOCIALA TIMIS,,,,,,,
,,,,,,,,
,Macheta Comparativa CREDITORI - numai pentru Beneficiile a caror Evidenta se tine si in Contabilitate si in aplicatia SAFIR,,,,,,,
,Situatie ANALITICA - NOMINAL la 30.06.2017,,,,,,,
,8. INDEMNIZATIE ART. 31 SI ART. 32 OUG 111/2010,,,,,,,
,Nr. Benef,Nume Prenume,CNP,Data Constituirii,Suma Contabilitate,Suma SAFIR,Differenta Suma,Explicatii daca exista diferente
,1,2,3,4,5,6,7=5-6,8
,AUGUSTIN, 14111, Mar 2016, 0, 600,
,AUGUSTIN, 1451, Feb 2015, 0, 600,
,IOAN, 1480, Aug 2014, Sept 2014, Oct 2014, 0, 291,
写入后,我的输出将如下所示:

import csv
with open("data//2.csv", "w") as f:
    writer = csv.writer(f)
    header = next(writer)
    writer.writerows(mylist)
mylist= [['AUGUSTIN', 14111, 'Mar 2016', 0, 600], ['AUGUSTIN', 1451, 'Feb 2015', 0, 600], ['IOAN', 1480, 'Aug 2014, Sept 2014, Oct 2014', 0, 291]]
,ANPIS,,,,,,,
,AGENTIA JUDETEANA PENTRU PLATI SI INSPECTIE SOCIALA TIMIS,,,,,,,
,,,,,,,,
,Macheta Comparativa CREDITORI - numai pentru Beneficiile a caror Evidenta se tine si in Contabilitate si in aplicatia SAFIR,,,,,,,
,Situatie ANALITICA - NOMINAL la 30.06.2017,,,,,,,
,8. INDEMNIZATIE ART. 31 SI ART. 32 OUG 111/2010,,,,,,,
,Nr. Benef,Nume Prenume,CNP,Data Constituirii,Suma Contabilitate,Suma SAFIR,Differenta Suma,Explicatii daca exista diferente
,1,2,3,4,5,6,7=5-6,8
,AUGUSTIN, 14111, Mar 2016, 0, 600,
,AUGUSTIN, 1451, Feb 2015, 0, 600,
,IOAN, 1480, Aug 2014, Sept 2014, Oct 2014, 0, 291,

csv
文件不是读写文件。它们只是用迭代器映射的普通文本文件,但只有在使用
读取器时才可用,因此
next
仅在读取时可用

因此,您必须读取前8行,存储它们,然后在输出中打开另一个文件(或再次打开该文件),并存储这8行标题,然后再存储新的输出

这段代码实现了我刚才描述的功能:

import csv
with open("input.csv", "r") as f:
    reader = csv.reader(f)
    start_of_list = [next(reader) for _ in range(8)]

mylist= [['AUGUSTIN', 14111, 'Mar 2016', 0, 600], ['AUGUSTIN', 1451, 'Feb 2015', 0, 600], ['IOAN', 1480, 'Aug 2014, Sept 2014, Oct 2014', 0, 291]]

with open("output.csv","w",newline="") as f:
    writer = csv.writer(f)
    writer.writerows(start_of_list)
    writer.writerows(mylist)

这是你问题的答案, 首先读取文件2.csv,然后选择所需行,直到保留该行数据,然后在附加模式下打开另一个新的csv文件“所需.csv”,并附加所需行和列表

with open('2.csv', "rb") as fd:
    reader = csv.reader(fd)
    desired_rows = [row for idx, row in enumerate(reader) if idx < 9]
    with open("desired.csv", "ab") as saved:
        writer = csv.writer(saved)
        writer.writerows(desired_rows)
        writer.writerows(mylist)
以open('2.csv',“rb”)作为fd的
:
reader=csv.reader(fd)
所需的_行=[idx的行,如果idx<9,则枚举(读取器)中的行]
保存打开(“所需的.csv”、“ab”)时:
writer=csv.writer(已保存)
writer.writerows(所需的行)
writer.writerows(mylist)

希望这能有所帮助。

我的列表在哪里定义?我编辑了我的帖子。我还发布了我预期的输出应该是什么样子的?为什么不先在文件中写入标题?然后以附加模式打开同一个文件,并将mylist的内容写入同一个文件。