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

像这样:

令人十分难受啊!

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

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

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

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

{:<x}的语法表示左对齐(>为右对齐,^为居中),少于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饰品价格的爬虫,

里面遇到的问题其实也挺多的比如登录动态加载等等

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

(话说前一天晚上写完这个爬虫,第二天凌晨c5就炸了......怕不是我拥有了东方的神秘力量....

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

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

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

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

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

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

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

  4. python表格对齐_python str.format 中文对齐的细节问题,

    python str.format 中文对齐的细节问题, 写了一个练手的爬虫...在输出的时候出现了让人很不愉♂悦的问题 像这样: 令人十分难受啊! #------------------------ ...

  5. python str format 输出花括号本身

    两个左花括号输出左花括号本身,两个右花括号输出右花括号本身. >>> print("{{{0}".format(0)) {0 >>> print ...

  6. python中的format什么意思中文-python里format什么意思

    format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型(推荐学习:Python视频教程) ...

  7. (转)Python 字符串格式化 str.format 简介

    原文:https://www.cnblogs.com/wilber2013/p/4641616.html http://blog.konghy.cn/2016/11/25/python-str-for ...

  8. Python——format()/str.format()函数

    格式化输出,除了类似于C语言的格式化输出外,还有str.format()方法,Python内建的format()函数,允许用户将待输出值以参数的形式,调用format()函数,在Python交互式sh ...

  9. python中str.format用法_详解Python中的str.format方法

    字符串的内置方法大致有40来个,但是一些常用的其实就那么20几个,而且里面还有类似的用法,区分度高比如:isalpha,isalnum,isdigit,还有一些无时不刻都会用到的split切分,joi ...

最新文章

  1. 技嘉主板bios设置键盘不能用_BIOS不再硬梆梆、全新技嘉主板BIOS设置就算不是玩家也能轻松搞定...
  2. mybaits二十一:2缓存介绍
  3. Citrix_XenServer-6.1安装过程详解(转)
  4. [Go] golang的MPG调度模型
  5. 图像处理之基础---仿射变换
  6. jvm 崩溃日志设置_记一次JVM疯狂GC导致CPU飙高的问题解决
  7. Opserver开源的服务器监控系统(ASP.NET)
  8. 【NOI2020】命运【树形dp】【线段树合并】
  9. Docker制作dotnet core控制台程序镜像
  10. c语言经典例题100例
  11. scala.list
  12. 求解简单的四则运算表达式
  13. 文本框焦点事件显示隐藏文本框内容
  14. 微信小程序转发,发送朋友圈(uni-app)
  15. mqtt客户端c语言开发
  16. Day4--MATLAB简介
  17. ios 画带有箭头的线_iOS 箭头类型视图的几点心得
  18. 英国脱欧对GDPR的实施有影响吗?
  19. 第一章 网络入门【仅参考】
  20. Java课程设计报告--绩效考核信息管理系统

热门文章

  1. 计算机对物理学的意义,学习普通物理学对计算机专业的意义
  2. IEEE754运算中移码与阶码变换关系的理解
  3. 安全帽佩戴识别系统介绍
  4. 《中学生作文指导》期刊简介及投稿要求
  5. jquery移除元素同时销毁事件
  6. 信用卡和车贷等奇葩的利率计算方式,看起来利率低,实际要比房贷等坑很多
  7. 前端面试必会html标签+属性
  8. java学习之——开篇
  9. 超简单但又超有效的基于CNN的暗光成像模型
  10. 闪贷Dapp的调研及实现