从列表中格式化Python中的字符串

从列表中格式化Python中的字符串,python,Python,这是我的节目。我正试图将列表中的输出格式化如下: 如果有人可以帮助我,因为我发现由于列表中每个字符串的长度不同,会导致对齐错误,因此必须有更好的方法正确对齐信息。提前感谢。仅使用代码的相关部分,以及,以下是一个尝试: class Employee: def set_name(self, name): self.name = name def set_IDnumber(self, IDnumber): self.IDnumber = IDnumber def set_dep

这是我的节目。我正试图将列表中的输出格式化如下:


如果有人可以帮助我,因为我发现由于列表中每个字符串的长度不同,会导致对齐错误,因此必须有更好的方法正确对齐信息。提前感谢。

仅使用代码的相关部分,以及,以下是一个尝试:

class Employee:

def set_name(self, name):
    self.name = name

def set_IDnumber(self, IDnumber):
    self.IDnumber = IDnumber

def set_department(self, department):
    self.department = department

def set_jobTitle(self, jobTitle):
    self.jobTitle = jobTitle

def get_name(self):
    # Returns name
    return self.name

def get_IDnumber(self):
    # Returns IDnumber
    return self.IDnumber

def get_department(self):
    # Returns department
    return self.department

def get_jobTitle(self):
    # Returns job title
    return self.jobTitle

def make_list():
    # Declaring list for storing information
    employee_list = []
    print("Enter data for 3 employees")
    # Loop to loop through 3 employees info
    for i in range(1, 4):
        print('Employee ' + str(i))
        # Takes input for each object
        name = input('Enter employee name: ')
        idNumber = int(input('Enter employee ID number: '))
        department = input('Enter employee department: ')
        jobTitle = input('Enter job title: ')
        employee = Employee()
        # Sets information for each object
        employee.set_name(name)
        employee.set_IDnumber(idNumber)
        employee.set_department(department)
        employee.set_jobTitle(jobTitle)
        employee_list.append(employee)
    #Returns list for display
    return employee_list

def displayEmployees(list):
    # Declaring strings to be further manipulated for spacing purposes
    shopString = "CHRISTY'S SHOP EMPLOYEE REPORT"
    employeeString = "EMPLOYEE NAME"
    identifierString = "IDENTIFIER"
    departmentString = "DEPARTMENT"
    titleString = "TITLE"
    # String alignment
    print(shopString.center(70))
    print(employeeString + identifierString.center(40) + departmentString +     titleString.rjust(10))
    print("------------------" + "----------".center(30) + "----------".rjust(15) + "-----".rjust(10))
    for item in list:
        name = item.get_name()
        idNumber = item.get_IDnumber()
        department = item.get_department()
        jobTitle = item.get_jobTitle()
        print(name + idNumber.center(30) + department.rjust(15) + jobTitle.rjust(10))


def main():
    employees = make_list()
    displayEmployees(employees)

main()

当然,按照您的意愿对其进行修改和格式化是非常简单的。

最后的代码

我更改了你代码中的一些内容

首先,因为您没有非ACCESOR的方法,所以我用它代替了Employee类。如果你真的需要(在课堂上)获得者和设置者,请大声阅读,并使其深入人心:

如果我必须拥有它们,那么我会把它们藏在一处房产后面

(引述自)。 我指的是财产。 但是,请尽量不要这样做,请参见:

其次,您必须检查用户是否为您提供了良好的类型(因此)

第三,, 我用了一种叫做。如果涉及到字符串格式,它确实很有帮助

从集合导入namedtuple
Employee=namedtuple('EmployeeRecord','name,idNumber,department,jobTitle'))
def生成列表():
雇员=[]
打印(“输入3名员工的数据”)
i=1
而我<4:
打印(‘员工’+str(一))
name=input('输入员工姓名:')
idNumber=input('输入员工ID号:')
尝试:
idNumber=int(idNumber)
除值错误外:
打印(“支持ID号为整数”)
持续
idNumber=int(idNumber)
部门=输入('输入员工部门:')
jobTitle=输入('输入职务:')
employees.append(员工(姓名、ID号、部门、职务))
i+=1
返回员工
def displayEmployees(列表、标题格式、记录格式):
shopString=“克里斯蒂的店铺员工报告”
打印(“{:^70}”。格式(shopString))
打印(标题格式(“员工姓名”、“标识符”、“部门”、“职务”))
打印(标题格式(“---------------------”、“-----------”、“-----------”、“-----------”、“-----------”、“-----------”)
对于列表中的项目:
name=item.name
idNumber=项目。idNumber
部门=项目。部门
jobTitle=项目。jobTitle
打印(recordFormat.format(姓名、ID号、部门、职务))
def main():
employees=make_list()#您可以取消对此行的注释

titleFormat=“{:你来自java背景,不是吗?是的,我不知道你是怎么注意到的,但感谢你注意到的。:)你想要字符串方法。
ljust
center
rjust
@Denziloe他似乎一直在使用它们,因为我们在python中不太使用getter和setter
# String alignment
print('{:^62}'.format(shopString))
print('{:<22}{:^20}{:<19}{:<15}'.format(employeeString, identifierString, departmentString, titleString))
print('{:<22}{:^20}{:<19}{:<15}'.format("------------------", "----------", "--------------", "-----------"))
for item in list:
    name = item.get_name()
    idNumber = item.get_IDnumber()
    department = item.get_department()
    jobTitle = item.get_jobTitle()
    print('{:<22}{:^20}{:<19}{:<15}'.format(name, idNumber, department, jobTitle))
                CHRISTY'S SHOP EMPLOYEE REPORT                
EMPLOYEE NAME              IDENTIFIER     DEPARTMENT         TITLE          
------------------         ----------     --------------     -----------    
Lily Thomas                   412         Administration     Manager        
John Doe                      132         Accounting         Accountant     
LaQuanda Shaka                321         Sales              Associate
                    CHRISTY'S SHOP EMPLOYEE REPORT                    
EMPLOYEE NAME              IDENTIFIER   DEPARTMENT     TITLE     
------------------         ----------   ----------     -----     
name1                           1         dep1         title1    
name2                           2         dep2         title2    
name3                           3         dep3         title3