Python - 格式化元组/字符串
Posted
技术标签:
【中文标题】Python - 格式化元组/字符串【英文标题】:Python - formatting a tuple/string 【发布时间】:2018-08-20 19:36:20 【问题描述】:对于我拼命努力的课程作业,我尝试将输入设置到字典中,然后使用它来格式化和打印字符串,使其显示如下。
Surname, Forename Payroll Department Salary
名称应使用上面显示的格式显示,因此您需要创建一个包含此格式名称的字符串,并将其打印在固定宽度的字段中。您可以假设以这种格式显示时,没有名称包含超过 30 个字符,没有一个部门包含超过 15 个字符,工资单号码最多包含 5 位数字,所有工资都是小于 100,000 的整数。
到目前为止,我只管理了这一点,因为每次我似乎更改了第 9 行的任何内容时,它都会返回一个错误,说“元组索引必须是整数或切片,而不是字符串”,但我不知道该怎么做。
payroll = int(input("Enter your Payroll."))
department = input("Enter your Department Name.")
salary = int(input("Enter your Salary."))
forename = input("Enter your Forename.")
surname = input("Enter your Surname.")
list_lect = payroll, department, salary, forename, surname
str = '0[4],0[3]0[0:5] 0[2] 0[3]'.format(list_lect)
print(str)
如果有人在 python 中挣扎,任何帮助都将不胜感激。
【问题讨论】:
这样打印元组是不可能的。 请问为什么要以这种格式打印,除了不可能以这种方式打印元组之外? 元组是一种数据结构,与该结构在屏幕上的显示方式无关。你当然可以打印数据 来自数据结构,你可以用任何你喜欢的方式。 课程作业需要它。是否有可能再次将元组更改为列表,然后像这样格式化它? @Shaun 你确定教授不只是希望你像那样从元组中打印 数据 吗?再现实际的作业文本并明确它是一个家庭作业问题。通过编辑问题来做到这一点,而不是通过粘贴到 cmets 【参考方案1】:虽然制作一个打印功能以按照您想要的方式打印会很简单:
a = ('Surname', 'Forename', 'Payroll', 'Department', 'Salary')
def printer(tup):
print_string = str("(")
pad = 24
print_string += ", ".join(tup[:2]).ljust(pad)
print_string += ", ".join(tup[2:4]).ljust(pad)
print_string += tup[-1] + ")"
print(print_string)
>>> printer(a)
(Surname, Forename Payroll, Department Salary)
我建议以不同的方式处理它会更干净。也许我可以建议单独获取这些值,然后以命名方式将它们组合起来。像这样
payroll = input("Enter your Payroll.")
department = input("Enter your Department Name.")
salary = input("Enter your Salary.")
forename = input("Enter your Forename.")
surname = input("Enter your Surname.")
然后您可以执行您想要的任何分组并以更合理的方式打印它们
print("%s, %s %s, %s %s" % (surename, forename, .....etc)
然后你可以将它们存储在一个有意义的数据结构中
【讨论】:
【参考方案2】:为什么需要这个?据我所知,打印带间距的元组是不可能的,但我确信还有另一种方法可以实现您正在寻找的东西。除此之外,还有一种变通方法,尽管您没有打印元组。
indexs =
payroll = 0,
dept = 1,
salary = 2,
name = 3,
surname = 4
str = "('surname', 'name' 'payroll', 'dept'
'salary')".format(surname = z[indexs[surname]], name = z[indexs[name]],
payroll = z[indexs[payroll]], dept = z[indexs[dept]], salary =
z[indexs[salary]])
print(str)
它并不完美,因为它只是字符串格式,但如果你想让你的输出看起来和你说的完全一样,这是唯一的方法。当然,您的目标可能非常不同。无论如何,希望这会有所帮助
【讨论】:
以上是关于Python - 格式化元组/字符串的主要内容,如果未能解决你的问题,请参考以下文章