我不知道我是否理解问题,但我会在没有嵌套循环的情况下这样做
我假设您在 sample1 中有三行X,Y在Zsample2 中有三行ABC,,DEFGHI
它创建三个页面X,Y和Z接下来的三个页面ABC, DEF,GHI
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
#sample2 = csv.reader(open('sample2.csv'))
sample1 = ["X", "Y", "Z"]
sample2 = ["ABC", "DEF", "GHI"]
for a in sample1:
c.drawString(100, 800, a[0]) # X / Y / Z
c.showPage()
for b in sample2:
c.drawString(200, 700, b[0]) # A / D / G
c.drawString(200, 600, b[1]) # B / E / H
c.drawString(200, 500, b[2]) # C / F / I
c.showPage()
c.save()
但是如果你只想创建三个页面X+ABC,Y+DEF那么Z+GHI你需要zip()
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
#sample2 = csv.reader(open('sample2.csv'))
sample1 = ["X", "Y", "Z"]
sample2 = ["ABC", "DEF", "GHI"]
for a, b in zip(sample1, sample2):
c.drawString(100, 800, a[0])
c.drawString(200, 700, b[0])
c.drawString(200, 600, b[1])
c.drawString(200, 500, b[2])
c.showPage()
c.save()
顺便说一句:如果你需要九页
X+ABC, X+DEF,X+GHI
Y+ABC, Y+DEF,Y+GHI
Z+ABC, Z+DEF,Z+GHI
然后你必须移动drawString( a[0])并showPage()进入第二个循环
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
sample1 = ["X", "Y", "Z"]
for a in sample1:
#sample2 = csv.reader(open('sample2.csv'))
sample2 = ["ABC", "DEF", "GHI"]
for b in sample2:
c.drawString(100, 800, a[0])
c.drawString(200, 700, b[0])
c.drawString(200, 600, b[1])
c.drawString(200, 500, b[2])
c.showPage()
c.save()