在python中将两个csv合并成一个带有分页符的csv

2024-04-19 23:21:10 发布

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

所以我试着把两个不同的csv文件合并成一个文件,我做到了。这两个csv文件是在学校的学生,他们在1中在场,在另一个中缺席。
我需要将文件创建日期放在新csv的顶部,并将当前学生的每个年级放在新页面上或3个空行之后。
另外,在每一页或每3个空格后,我想有名字或教师,创建文件的日期和成绩。你知道吗

 import csv
 with open('inschool.csv', encoding="cp437") as f:
     reader =  csv.reader(f)
     in_school = list(reader)
 with open('notinschool.csv', encoding="cp437") as f:
     reader =  csv.reader(f)
     not_in_school = list(reader)

 for grade, name, status, hr_teacher in not_in_school:
     print(grade, name, status, hr_teacher)
 for grade, name, status, hr_teacher in in_school:
     print(grade, name, status, hr_teacher)


 iFile = open('inschool.csv', encoding="cp437")
 reader = csv.reader(iFile)
 IFILE = open('notinschool.csv', encoding="cp437")
 READER = csv.reader(IFILE)
 oFile = open('combined.csv','wt',encoding="cp437")
 writer = csv.writer(oFile, delimiter='|', quoting=csv.QUOTE_ALL)

 for row in READER:
    writer.writerow(row)
    writer.writerow("[]")
 for row in reader:
    writer.writerow(row)
    writer.writerow("[]")

我试过的3个空行的代码有这样的结尾,但是它在每个学生的名字后面给出了3个空行,而不是在每个年级后面。你知道吗

iFile = open('Inschool.csv',)
reader = csv.reader(iFile)
IFILE = open('notinschool.csv')
READER = csv.reader(IFILE)
oFile = open('combined.csv','wb')
writer_a = csv.writer(oFile, delimiter='|', quoting=csv.QUOTE_ALL)
writer_b = csv.writer(oFile, delimiter='|', quoting=csv.QUOTE_ALL, lineterminator="\n\n\n\n")

for row in READER:
   writer_a.writerow(row)

   writer_b.writerow([])

for row in reader:
   writer_b.writerow(row)

如果有人能帮助我,我将不胜感激。谢谢。你知道吗


Tags: 文件csvnameinforopenencodingreader
1条回答
网友
1楼 · 发布于 2024-04-19 23:21:10

在候机楼你可以做得很容易。只需cd到目录并执行命令cat inschool.csv notinschool.csv > combined.csv

如果你想在Python里做,我会做:

in_file1 = open("inschool.csv","r").read().split("\n")
in_file2 = open("notinschool.csv","r").read().split("\n")

out_file = open("combined.csv","w")

for line in in_file1:
    if line:
        out_file.write(line + "\n")

for line in in_file2:
    if line: 
        out_file.write(line + "\n")

以上面的方式读取文件并不是最有效的,但是如果文件很小,那就不重要了,而且更容易直观地看到正在发生的事情。您可以将输入文件方法用于此b/c概念保持不变:)

我刚开始使用这个叫做pandas的模块,它是为DataFrames设计的。它们比解析文本文件更易于使用、处理、浏览和合并。你知道吗

相关问题 更多 >