问一个python格式化中文字符串的问题

superlia 2013-04-11 09:03:36
使用下面这句

print len(self.curname)
print "%20s%5s%5s"%((self.curname),self.credit,self.renum)
输出结果为
14
计算机组成原理 4 1
8
操作系统 4 1
14
TCP/IP协议原理 3.5 1
12
网络操作系统 3 1
12
信息安全概论 4 1
12
网络互联技术 3.5 1
15
C++语言程序设计 3 1
16
操作系统课程设计 1 1
6
女性学 2 1

使用%20s想设置输出长度为20位,但当出现中文的时候总是无法对齐,我用的是python 2.7,有什么方法解决吗?
...全文
241 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
superlia 2013-04-12
  • 打赏
  • 举报
回复
引用 7 楼 angel_su 的回复:
输出环境的问题,在原始cmd下测试吧。譬如你用idle的话,虽然默认courier是等宽,不过中文是系统默认的宋体大小不一致,要改一下字体,不然咋都对不拢...
确实如此,谢谢
angel_su 2013-04-12
  • 打赏
  • 举报
回复
输出环境的问题,在原始cmd下测试吧。譬如你用idle的话,虽然默认courier是等宽,不过中文是系统默认的宋体大小不一致,要改一下字体,不然咋都对不拢...
ImN1 2013-04-11
  • 打赏
  • 举报
回复
多年前已基本不采用这种输出,除非是打印机(收银台那种) 如果是控制台显示,可以拆分两个输出语句,一个中文部分,一个其他,用flush控制刷新在同一行显示 输出到文本的话,用csv之类带格式的方式更好
superlia 2013-04-11
  • 打赏
  • 举报
回复
引用 3 楼 snmr_com 的回复:
我个人的意见是放弃这种处理方法 理由是即使在本机测试实现对齐了,移到其他机器运行受该机器的字体环境将属于结果不可预料
但是如果要实现输出对齐的话应该怎么办?有什么好的解决方法吗?
李察德-泰森 2013-04-11
  • 打赏
  • 举报
回复

print len(self.curname)
print "%-50s\t%5s%5s"%((self.curname),self.credit,self.renum)
ImN1 2013-04-11
  • 打赏
  • 举报
回复
我个人的意见是放弃这种处理方法 理由是即使在本机测试实现对齐了,移到其他机器运行受该机器的字体环境将属于结果不可预料
superlia 2013-04-11
  • 打赏
  • 举报
回复
引用 1 楼 selecthis 的回复:
Python code?12print len(self.curname)print "%-20s%-5s%-5s"%((self.curname),self.credit,self.renum)

依然是这样啊,只是左对齐了
李察德-泰森 2013-04-11
  • 打赏
  • 举报
回复

print len(self.curname)
print "%-20s%-5s%-5s"%((self.curname),self.credit,self.renum)

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧