Python 3.x 带有已处理溢出的术语和定义的Python打印表

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.

我试图制作一个程序,打印出一个两列的表格(术语和定义),类似这样:(表格宽度应该是80个字符)

我有这方面的现有代码,但它在每一行上都打印出“这是第一个术语”,因为我使用了嵌套的for循环。(还尝试实现textwrap模块)以下是我的代码:

# 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("*                                                                              *")