Python 实验题目:提取出所有学生的序号,姓名,成绩

str1 = '''<tbody>
<tr><td><span><span class="c-index  c-index-hot1 c-gap-icon-right-small">1</span>张婷婷</span></td><td class="opr-toplist-right">92<i class="opr-toplist-st c-icon c-icon-down"></i></td></tr>
<tr><td><span><span class="c-index  c-index-hot2 c-gap-icon-right-small">2</span>王华</span></td><td class="opr-toplist-right">91<i class="opr-toplist-st c-icon c-icon-down"></i></td></tr>
<tr><td><span><span class="c-index  c-index-hot3 c-gap-icon-right-small">3</span>张岚</span></td><td class="opr-toplist-right">90<i class="opr-toplist-st c-icon c-icon-down"></i></td></tr>
<tr><td><span><span class="c-index  c-gap-icon-right-small">4</span>孙鸿峰</span></td><td class="opr-toplist-right">90<i class="opr-toplist-st c-icon c-icon-down"></i></td></tr>
<tr><td><span><span class="c-index  c-gap-icon-right-small">5</span>周海栋</span></td><td class="opr-toplist-right">89<i class="opr-toplist-st c-icon c-icon-down"></i></td></tr>
<tr><td><span><span class="c-index  c-gap-icon-right-small">6</span>武静</span></td><td class="opr-toplist-right">88<i class="opr-toplist-st c-icon c-icon-down"></i></td></tr>
</tbody>'''

startpos = 0
number = str1.count('<tr><td>')  # 计算信息中的总人数,便于确定需要循环的次数
for i in range(number):  # 开始循环查找、分割
    pos1 = str1.find('</span>', startpos)  # 找到每行的第一个'</span>'的位置
    num = str1[pos1 - 1:pos1]  # 分割获得学生序号
    pos2 = str1.find('</span>', pos1 + len('</span>'))  # 找到每行的第二个'</span>'的位置
    name = str1[pos1 + len('</span>'):pos2]  # 分割获得学生姓名
    substr1 = '<td class="opr-toplist-right">'
    substr2 = '<i class="opr-toplist-st c-icon c-icon-down">'
    pos3 = str1.find(substr1, startpos)  # 获得每行字符串'<td class="opr-toplist-right">'的位置
    pos4 = str1.find(substr2, startpos)  # 获得每行字符串'<i class="opr-toplist-st c-icon c-icon-down">'的位置
    grade = str1[pos3 + len(substr1):pos4]  # 分割获得学生成绩
    startpos = (pos4 + len(substr2))  # 确定下一次查找定位的开始位置

    print('序号%2s,姓名:%-3s,成绩%3s' % (num, name, grade))  # 输出分割所得学生的信息

运行结果截图:

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值