首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在csv文件中进行循环?

如何在csv文件中进行循环?
EN

Stack Overflow用户
提问于 2019-06-26 20:39:27
回答 1查看 54关注 0票数 0

我不希望line1、line2之类的东西被一遍又一遍地写。如何在其中做一个循环,这样我就不必每次都写东西了?我试过了,但失败了。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2019-06-27 00:11:00

我认为有两个关键来回答你直接提出的问题。第一个是Python的zip()函数,它接受一系列序列并对它们进行交织。例如:

代码语言:javascript
复制
>>> list(zip((1,2,3), (4,5,6)))
[(1,4), (2,5), (3,6)]

第二个关键是,在Python中,您可以通过在函数前面加上星号('*')来传递一系列参数。例如:

代码语言:javascript
复制
>>> def add(*args):
       return sum(args)
>>> add(1,2,3)
6
>>> numbers = [1,2,3]
>>> add(*numbers)
6

这两个键结合起来可以让您消除大部分笨拙的line1、line2构造。

代码语言:javascript
复制
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重写文件的解析。它会让你的代码更干净、更健壮。

代码语言:javascript
复制
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数据测试这些代码,所以您可能需要对其进行一些清理。但至少它应该为你指明正确的方向。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56773062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档