平均打印2个均匀填充的列表 [英] Printing 2 evenly populated lists side by side evenly

查看:157
本文介绍了平均打印2个均匀填充的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆