我不希望一次又一次地写入line1,line2等。如何在其中循环,这样我就不必每次都写?我尝试了但失败了。
from prettytable import PrettyTable
csv_file = open('filo.csv','r')
csv_file = csv_file.readlines()
line1 = csv_file[0]
line1 = line1.split(',')
line2 = csv_file[1]
line2 = line2.split(',')
x = PrettyTable([line1[0],line2[0]])
for a in range(1, len(line1)):
x.add_row([line1[a], line2[a]])
html_code = x.get_html_string()
html_file = open('table.html','w')
html_file = html_file.write(html_code)
答案 0 :(得分:0)
我认为回答您的紧迫问题有两个关键。第一个是Python的zip()
函数,该函数采用序列序列并将它们交错。例如:
>>> list(zip((1,2,3), (4,5,6)))
[(1,4), (2,5), (3,6)]
第二个键是在Python中,您可以在函数前面加上星号('*'),以将参数序列传递给函数。例如:
>>> def add(*args):
return sum(args)
>>> add(1,2,3)
6
>>> numbers = [1,2,3]
>>> add(*numbers)
6
这两个键一起使您可以消除大多数笨拙的line1,line2结构。
csv_file = open('filo.csv','r')
csv_file = csv_file.readlines()
line1 = csv_file[0].split(',')
line2 = csv_file[1].split'(',')
interleaved = list(zip(line1, line2))
x = PrettyTable(*interleaved[0])
for pair in interleaved[1:]:
x.add_row(*pair)
# Then go on to generate and write HTML code, as before.
这应该可以解决您的直接问题。此外,您可能希望使用with
语句重写文件的打开和读取,并使用Python's csv
module进行文件的解析。它将使您的代码更简洁,更健壮。
import csv
from prettytable import PrettyTable
with open('filo.csv') as csv_file:
myreader = csv.reader(csv_file)
interleaved = list(zip(next(myreader), next(myreader)))
x = PrettyTable(*interleaved[0])
for pair in interleaved[1:]:
x.add_row(*pair)
# and so forth.
您去了! “ line1”和“ line2”一词完全消失了。
公平的警告:我没有针对CSV数据测试过此代码中的任何一个,因此您可能必须进行一些清理。但是至少它应该为您指明正确的方向。