Python 3.x 带有已处理溢出的术语和定义的Python打印表
我试图制作一个程序,打印出一个两列的表格(术语和定义),类似这样:(表格宽度应该是80个字符) 我有这方面的现有代码,但它在每一行上都打印出“这是第一个术语”,因为我使用了嵌套的for循环。(还尝试实现textwrap模块)以下是我的代码:Python 3.x 带有已处理溢出的术语和定义的Python打印表,python-3.x,csv,word-wrap,Python 3.x,Csv,Word Wrap,我试图制作一个程序,打印出一个两列的表格(术语和定义),类似这样:(表格宽度应该是80个字符) 我有这方面的现有代码,但它在每一行上都打印出“这是第一个术语”,因为我使用了嵌套的for循环。(还尝试实现textwrap模块)以下是我的代码: # read file with open(setsList[selectedSet-1], "r", newline="") as setFile: cardList = list(csv.reader(setFile)) setFile.
# read file
with open(setsList[selectedSet-1], "r", newline="") as setFile:
cardList = list(csv.reader(setFile))
setFile.close()
for i in range(len(cardList)):
wrapped_term = textwrap.wrap(cardList[i][0], 30)
wrapped_definition = textwrap.wrap(cardList[i][1], 30)
for line in wrapped_term:
for line2 in wrapped_definition:
print(line, " ",line2)
print("- - - - - - - - - - - - - - - - - - - - - - - - - - -")
有人能提出解决办法吗?谢谢。经过大量(尝试)错误和随机youtube视频后,解决方案是:(如果有人有类似问题)
打开(“table.csv”,“r”,newline=“”)作为设置文件:
cardList=列表(csv.reader(setFile))
setFile.close()
打印(“+-----------------------------------------------------------------------------------------------+”)
打印(“|术语|定义|”)
打印(“+-----------------------------------------------------------------------------------------------+”)
打印()
对于范围内的x(len(卡片列表)):
wrapped_term=textwrapp.wrapp(卡片列表[x][0],30)
wrapped_definition=textwrap.wrap(卡片列表[x][1],30)
包装的_列表=[]
对于范围内的i(len(包装项)):
尝试:
wrapped_list.append([wrapped_term[i],wrapped_definition[i]]))
除索引器外:
如果len(包装术语)>len(包装定义):
包装的\u列表。追加([wrapped\u term[i],“”)
elif len(包装术语)
基本上,我创建了每个术语和定义的包装版本
然后try-catch检查术语是否比定义长(以行为单位),如果是,则为定义放空行,反之亦然
然后,我创建了一个包装的_列表(组合的术语和定义)来存储上述内容
在这段视频的帮助下:(),我格式化了表格
希望这能帮助任何遇到类似问题的人——这可以应用于表中任意数量的列,以及任意长度的csv文件
# read file
with open(setsList[selectedSet-1], "r", newline="") as setFile:
cardList = list(csv.reader(setFile))
setFile.close()
for i in range(len(cardList)):
wrapped_term = textwrap.wrap(cardList[i][0], 30)
wrapped_definition = textwrap.wrap(cardList[i][1], 30)
for line in wrapped_term:
for line2 in wrapped_definition:
print(line, " ",line2)
print("- - - - - - - - - - - - - - - - - - - - - - - - - - -")
with open("table.csv", "r", newline="") as setFile:
cardList = list(csv.reader(setFile))
setFile.close()
print("+------------------------------------------------------------------------------+")
print("| Term | Definition |")
print("+------------------------------------------------------------------------------+")
print()
for x in range(len(cardList)):
wrapped_term = textwrap.wrap(cardList[x][0], 30)
wrapped_definition = textwrap.wrap(cardList[x][1], 30)
wrapped_list = []
for i in range(len(wrapped_term)):
try:
wrapped_list.append([wrapped_term[i], wrapped_definition[i]])
except IndexError:
if len(wrapped_term) > len(wrapped_definition):
wrapped_list.append([wrapped_term[i], ""])
elif len(wrapped_term) < len(wrapped_definition):
wrapped_list.append(["", wrapped_definition[i]])
column1 = len(" Term ")
column2 = len(" Definition ")
print("+--------------------------------------+---------------------------------------+")
for item in wrapped_list:
print("|", item[0], " "*(column1 - len(item[0])),"|", item[1], " "*(column2-len(item[1])), "|")
print("+--------------------------------------+---------------------------------------+")
print("* *")