爬取内容的格式化输出
前言:基于上次分享(对中国大学排名的爬取)的输出混乱的问题,提出解决办法。
使用replace()方法
-
replace():str.replace(old,new) #old被new替换
-
确定被替换的str

分析:
使用print(u)得到结果,发现输出多了很多不必要的信息,有空格以及/n,所以使用replace()替换解决
改进代码1:
def printUnivList(ulist, num): # 输出结果
print("{0:6s}{1:10s}{2:6s}".format("排名", "学校名称", "总分"))
for i in range(num):
u = ulist[i]
print("{0:6s}{1:10s}{2:6s}".format(u[0].replace(' ', '').replace('\n', '').replace('\r', ''),
u[1].replace(' ', '').replace('\n', '').replace('\r', ''),
u[2].replace(' ', '').replace('\n', '').replace('\r', '')))
结果:

对齐问题的解决
-
上面运行结果不够美观(未对齐)。
-
原因:当中文字符宽度不够时,采用西文字符填充,中西文字符占用的宽度不同。
-
解决办法:统一采用中文字符填充:chr(12288)
改进代码2:
def printUnivList(ulist, num): # 输出结果
tplt = "{0:^10}{1:{3}^20}{2:^10}" #定义输出的模板变量,{3}表示填充时采用第三个字符填充
print(tplt.format("排名", "学校名称", "总分", chr(12288))) #打印头
for i in range(num):
u = ulist[i]
print(tplt.format(u[0].replace(' ', '').replace('\n', '').replace('\r', ''),
u[1].replace(' ', '').replace('\n', '').replace('\r', ''),
u[2].replace(' ', '').replace('\n', '').replace('\r', ''),
chr(12288)))
结果:

调用python美化库(prettytable)
- prettytable:可以将输出内容如表格方式整齐的输出
代码:
def printUnivList(ulist, num): # 输出结果
table = pt.PrettyTable() # 直接创建表
table.field_names = ["排名", "学校名称", "总分"] # 表头字段
for i in range(num):
u = ulist[i]
table.add_row([u[0].replace(' ', '').replace('\n', '').replace('\r', ''), # 按行添加数据
u[1].replace(' ', '').replace('\n', '').replace('\r', ''),
u[2].replace(' ', '').replace('\n', '').replace('\r', '')])
print(table) # 打印表
结果:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人