Python-格式化元组/字符串

时间:2018-08-20 19:36:20

标签: python python-3.x

对于我拼命挣扎的课程,我尝试将输入内容设置为字典,然后使用它来格式化和打印字符串,使其显示如下所示。

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苦苦挣扎的人,任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

使打印功能以所需方式打印很简单:

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)

然后您可以将它们存储在同样有意义的数据结构中

答案 1 :(得分:-1)

为什么需要这个?据我所知,打印带有间距的元组是不可能的,但是我敢肯定,还有另一种方法可以实现您想要的。除此之外,可以说,尽管您没有打印出元组,但还是有一种解决方法。

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)

它不是完美的,因为它只是字符串格式,但是如果您希望输出与您所说的完全一样,这是唯一的方法。当然,您的目标可能会大不相同。无论如何,希望对您有帮助