Jac*_*hip 8 python string formatting list rows
我正在使用以下代码生成2个列表,nameList和gradeList.
nameList[]
gradeList[]
for row in soup.find_all('tr'):
name = row.select('th strong')
grade = row.select('td label')
if grade and name:
if "/" in grade[0].text:
gradeList.append(grade[0].text)
nameShort = re.sub(r'^(.{20}).*$', '\g<1>...', str(name[0].text))
nameList.append(nameShort)
Run Code Online (Sandbox Code Playgroud)
产生类似的东西:
nameList = [“grade 1”,”grade 2222222222”,”grade 3”]
gradeList = [“1/1”,”2/2”,”100000/100000”]
Run Code Online (Sandbox Code Playgroud)
我希望程序能够并排打印2个清洁列中的列表.在每列中,我希望数据对齐到左侧.列表(没有失败)将始终均匀填充.第一列(nameList)永远不会超过25个字符.我正在寻找的将类似于以下内容:
Assignment Grade
0 grade 1 1/1
1 grade 2222222222 2/2
2 grade 3 100000/100000
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用pandas并且它有效,但格式化很奇怪且不合适.它不会像我想的那样对齐左边.我相信这是因为每个数据在两个列表中都有不同的字符长度(如上所示).
fal*_*tru 10
使用str.format:
nameList = ["grade 1", "grade 2222222222", "grade 3"]
gradeList = ["1/1", "2/2", "100000/100000"]
fmt = '{:<8}{:<20}{}'
print(fmt.format('', 'Assignment', 'Grade'))
for i, (name, grade) in enumerate(zip(nameList, gradeList)):
print(fmt.format(i, name, grade))
Run Code Online (Sandbox Code Playgroud)
输出:
Assignment Grade
0 grade 1 1/1
1 grade 2222222222 2/2
2 grade 3 100000/100000
Run Code Online (Sandbox Code Playgroud)
或者,您也可以printf使用%运算符使用样式格式:
fmt = '%-8s%-20s%s'
print(fmt % ('', 'Assignment', 'Grade'))
for i, (name, grade) in enumerate(zip(nameList, gradeList)):
print(fmt % (i, name, grade))
Run Code Online (Sandbox Code Playgroud)
鉴于两个清单
nameList = ['grade 1','grade 2222222222','grade 3']
gradeList = ['1/1','2/2','100000/100000']
Run Code Online (Sandbox Code Playgroud)
制表符分隔格式.使用zip()两个同时迭代两个列表
print 'Assignment \t\tGrade'
for n,g in zip(nameList,gradeList):
print n + '\t\t\t' + g
Assignment Grade
grade 1 1/1
grade 2222222222 2/2
grade 3 100000/100000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18944 次 |
| 最近记录: |