写了一个练手的爬虫...在输出的时候出现了让人很不愉♂悦的问题

像这样:

令人十分难受啊!

#------------------------------------------

在此之前先说一下python中的.format格式化输出

python2.6开始,可以使用str.format进行轻松的格式化,

如上可以看到,对变量的处理简洁灵活,此外对数字的各种位数处理也很到位

{:为右对齐,^为居中),少于x位自动补齐(默认为空格补齐)

这里值得注意的是,x也可以作为变量代入:

#------------------------------------------

着手解决问题,

第一反应使用\t制表符,带来的问题便是字符串长度差距超过一个制表位时,会跳到下一个制表位,如图:

不能接受,使用str.format补齐name属性的长度为25

结果却是这样的:

py虽好,有些细节还是没有照顾到中文

这里补齐长度时中文字符也按1字节计算了,

然而我们知道,utf-8中中文占用3个字节,GBK中占用了2个字节,只算作1字节显然不能对齐

这时求助于prettytable包输出表格,然而输出也不理想,可以想象也没有考虑中文编码的问题(或是需要设置编码为utf-8或gbk?)

分析一下理想的name所占的长度,应为固定的x字节(这里按目前的爬取结果暂时取22)

那么他的补齐长度应为

len = 22 - gbk编码下name的字节数 + name的字符数

幸运的是str.format支持使用变量代替补齐长度的值

尝试以下代码:

print('[{name:<{len}}x'.format(name=name+']',len=22-len(name.encode('GBK'))+len(name)))

结果十分接近理想了:

还是有一些迷之问题导致1-0.5字节长度的偏差,猜测是由于中文字体不是等宽字体的缘故?

然而不用多虑,这里就可以使用一记粗暴的制表符\t解决问题了

print('[{name:<{len}}\tx'.format(name=name+']',len=22-len(name.encode('GBK'))+len(name)))

大功告成!锵锵!

#------------------------------------------

后话

这次写的主要是一个爬取几个主要交易网站以及steam上dota2饰品价格的爬虫,里面遇到的问题其实也挺多的比如登录动态加载等等

等写的比较完善了大概也会一起发上来啦~

以上这篇浅谈python str.format与制表符\t关于中文对齐的细节问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python表格对齐_浅谈python str.format与制表符\t关于中文对齐的细节问题相关推荐

  1. python制表符对齐_浅谈python str.format与制表符\t关于中文对齐的细节问题

    写了一个练手的爬虫...在输出的时候出现了让人很不愉♂悦的问题 像这样: 令人十分难受啊! #------------------------------------------ 在此之前先说一下py ...

  2. 关于python格式对齐的问题_[宜配屋]听图阁 - 浅谈python str.format与制表符\t关于中文对齐的细节问题...

    写了一个练手的爬虫...在输出的时候出现了让人很不愉♂悦的问题 像这样: 令人十分难受啊! #------------------------------------------ 在此之前先说一下py ...

  3. python编写函数_浅谈Python 函数式编程

    匿名函数lambda表达式 什么是匿名函数? 匿名函数,顾名思义就是没有名字的函数,在程序中不用使用 def 进行定义,可以直接使用 lambda 关键字编写简单的代码逻辑.lambda 本质上是一个 ...

  4. python float 精度_浅谈Python里面小数点精度的控制

    要求较小的精度 round()内置方法 这个是使用最多的,刚看了round()的使用解释,也不是很容易懂.round()不是简单的四舍五入的处理方式. For the built-in types s ...

  5. python 迭代器协议_浅谈Python中的生成器和迭代器

    迭代器 迭代器协议 对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么返回一个异常来终止本次迭代.(只能往前走,不能往后退!) 迭代器对象 遵循了(实现了)迭代器协议的对象.(对象内 ...

  6. python static方法_浅谈python 类方法/静态方法

    1.类方法 类方法是从属于"类对象"的方法.类对象可以通过装饰器@classmethod来定义,具体格式如下: @classmethod def 类方法名(cls [, 形参列表] ...

  7. python未定义_浅谈Python程序的错误:变量未定义

    Python程序的错误种类 Python程序的错误分两种.一种是语法错误(syntax error).这种错误是语句的书写不符合Python语言的语法规定.第二种是逻辑错误(logic error). ...

  8. python hasattr函数_浅谈python中的getattr函数 hasattr函数

    hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的). 示例: & ...

  9. python str.format与制表符\t关于中文对齐的细节问题

    写了一个练手的爬虫...在输出的时候出现了让人很不愉♂悦的问题 像这样: 令人十分难受啊! #----------------------------------------------------- ...

最新文章

  1. HadoopSourceAnalyse---RMAppAttempt FSM
  2. EasyUI中layout布局的简单使用
  3. Jenkins+Jmeter持续集成笔记(四:定时任务和邮件通知)
  4. 感染性的木马病毒分析之样本KWSUpreport.exe
  5. C++中的explicit关键字用法
  6. 利用循环神经网络生成唐诗_可视化解释11种基本神经网络架构
  7. Tiny-Event-Manager 安全轻量的资源管理器
  8. JAVA深入研究——Method的Invoke方法(转)
  9. 21考研数学二和英语二复习规划
  10. 中国移动MM如何成就千亿梦想
  11. Attach Debugger
  12. 基于QT的【第一个项目】设计+所有组件配合使用+网络编程局域网通信+文件IO操作+登录界面和头像+多界面跳转+JSON数据解析+表情包制作
  13. 195元爱奇艺会员只卖5元 揭秘背后黑色产业链
  14. 21年双非二战南京大学软件学院专硕经验贴
  15. LeetCode 每日一题1584. 连接所有点的最小费用
  16. 安排 , 2021新冠疫情防控指挥作战平台(视频+课件+代码+资料)
  17. ORACLE12.1.0.2.0标准版下载地址
  18. 冥想(自我修养- 慎独 自我修行)
  19. java秒杀怎么防止超卖_秒杀系统是如何防止超卖的?
  20. 用Swiper撸一个爱奇艺导航

热门文章

  1. linux的scandir函数如何排序,Linux c 目录操作函数scandir
  2. 华为harmonyos电脑安装,华为MatePad Pro2入网:预装HarmonyOS系统
  3. Howard's Startup Game @meditic » 降级论
  4. 软件工程师必须需要知道的职位英文缩写
  5. vivox7html查看程序,vivox7隐藏图标密码忘了怎么解除
  6. 利用.ftl模板生成word之后再转pdf发现 填充的印章图片显示不全,没有自动移到下一页处理办法
  7. FTP服务器搭建及自动下载文件脚本
  8. Vue点击table表格某一行让其置顶
  9. 面对Twitter,AI表示“真心带不动”
  10. cannot resolve class xxx