【发布时间】:2021-07-16 02:05:17
【问题描述】:
我正在编辑这篇文章,因为我没有很好地解释我的问题,所以又来了。我正在使用制表库。我希望使用input() 根据给定的输入自动调整表中的列/行数。这是一个基本示例:
#!/bin/python3
from tabulate import tabulate
uid1 = input('UID > ')
uid2 = input('UID > ')
name1 = input('NAME > ')
name2 = input('NAME > ')
number1 = input('NUMBER > ')
number2 = input('NUMBER > ')
headers = ["UID", "NAME","NUMBER"]
table = [[uid1,name1,number1],[uid2,name2,number2]]
print(tabulate(table, headers, tablefmt="fancy_grid"))
╒═══════╤═════════╤══════════╕
│ UID │ NAME │ NUMBER │
╞═══════╪═════════╪══════════╡
│ 0 │ SHAWN │ 333-4444 │
├───────┼─────────┼──────────┤
│ 1 │ MICHAEL │ 222-3333 │
╘═══════╧═════════╧══════════╛
但下次脚本运行时,列/表会更多:
╒═══════╤════════╤══════════╕
│ UID │ NAME │ NUMBER │
╞═══════╪════════╪══════════╡
│ 0 │ JAMES │ 444-5555 │
├───────┼────────┼──────────┤
│ 1 │ ANDREW │ 666-3333 │
├───────┼────────┼──────────┤
│ 2 │ SHAWN │ 444-3333 │
╘═══════╧════════╧══════════╛
所以我试图找出一种方法来使用 for 循环或其他方式调整行和列的给定值,但我无法弄清楚。我想要类似的东西:
UIDs = input('Enter all UIDs $ ')
NAMES = input('Enter all names $ ')
NUMBERS = int(input('Enter all numbers $')
【问题讨论】:
-
你为什么要使用字符串格式?
split()给你一个字符串列表,然后你出于某种原因使用字符串格式化来构建一个相同的字符串列表。 -
如果您询问是否有一种方法可以迭代变量,那么我建议您详细说明您希望实现的目标。可以这样做,但这是一种主要的反模式,很可能不是您想要做的。
-
我不知道为什么我很难解释。因此,不必将尽可能多的值放入
headers和table = [[f"{dataone}",f"{datatwo}]]中,有没有办法在用户输入时自动添加尽可能多的值? -
有了这个:
table = [[f"{dataone}",f"{datatwo}]],我必须做dataone = input('dataone: ')才能分配值。不必每次都编辑它,说一件事我只需要两个条目,另一件事我需要 4 个,我必须将table = [[f"{dataone}",f"{datatwo}]]编辑为table = [[f"{dataone}",f"{datatwo}",f"{datathree}",f"{datafour}"]]然后下次更改它。我可以这样做:AllData = input('blah>>> ').split()然后也许是for Data in AllData: make room for values
标签: python variables string-formatting tabulate