平均打印2个均匀填充的列表 [英] Printing 2 evenly populated lists side by side evenly
问题描述
nameList []
我使用下面的代码来生成2个列表:nameList和gradeList。 gradeList []
。在soup.find_all行( 'TR'):
名称= row.select( '第强')
级= row.select( 'TD标签')
如果等级和名称:
如果在等级[0]中为/.text:
gradeList.append(grade [0] .text)
nameShort = re.sub(r str(name [0] .text))
nameList.append(nameShort)
<'20> / code>
产生类似于:
nameList = [grade 1,grade 2222222222,grade 3]
gradeList = [1/1,2/2,100000/100000]
我希望程序并列地在2个干净的列中打印列表。在每一列中,我想要数据左对齐。列表(无失败)将始终均匀填充。第一列(nameList)永远不会超过25个字符。我正在寻找的是类似于以下内容:
pre $ code赋值等级
0等级1 1/1
1年级2222222222 2/2
2年级3 100000/100000
试图用熊猫,它的工作,但格式是奇怪的和不合适的。它不会像我想要的那样左对齐。我相信这是因为每个数据在两个列表中都有不同的字符长度(如上所示)。 使用 str.format
:
$ p $
nameList = [grade 1,grade 2222222222,grade 3]
gradeList = [1/1 , 2/2, 一十万分之十万]
FMT = '{:其中8} {:其中20} {}'
打印(FMT .format( '', '分配', '级'))
对我,(姓名,年级)在枚举(ZIP(名称列表,gradeList)):
打印(fmt.format(我, )
$ b $ p $输出: p $ p> 分配等级
0等级1 1/1
等级2222222222 2/2
2等级3 100000/100000
或者,您也可以使用 p
fmt ='%-8s% - rintf
20S%s'的
打印(FMT%( '', '分配', '级'))在历数
对我,(姓名,年级)(ZIP(名称列表,gradeList) ):
print(fmt%(i,name,grade))
I'm using the following code to produce 2 lists, nameList and 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)
Producing something like:
nameList = ["grade 1","grade 2222222222","grade 3"]
gradeList = ["1/1","2/2","100000/100000"]
I want the program to print the lists in 2 clean columns, side by side. Within each column, I want the data to align to the left. The lists (without fail) will always be evenly populated. The first column (nameList) will never be longer than 25 characters. What I am looking for would be similar to the following:
Assignment Grade
0 grade 1 1/1
1 grade 2222222222 2/2
2 grade 3 100000/100000
I've tried to use pandas and it worked, but the formatting was weird and out of place. It wouldn't align to the left like I want. I believe this happened because the data each has a different character length in both lists (shown above).
Using 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))
output:
Assignment Grade
0 grade 1 1/1
1 grade 2222222222 2/2
2 grade 3 100000/100000
Alternatively, you can also use printf
style formatting using % operator:
fmt = '%-8s%-20s%s'
print(fmt % ('', 'Assignment', 'Grade'))
for i, (name, grade) in enumerate(zip(nameList, gradeList)):
print(fmt % (i, name, grade))
这篇关于平均打印2个均匀填充的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!