zoukankan      html  css  js  c++  java
  • 【Python④】python恼人的字符串,格式化输出

    恼人的字符串

    计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母a的编码是97。

    但是要处理中文至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。全世界有上百种语言,为了扩充ASCII编码,用于显示本国的语言,不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

    ps:此处不细说Unicode编码转化为“可变长编码”的UTF-8编码,有兴趣的读者可以自行查阅资料。

    python字符串的表示

    这里python3.x版本的改进就很是使用。

    在2.x版本中:

    >>> str="python 2.x 版本输出中文字符一点都不方便"
    >>> str
    'python 2.x xb0xe6xb1xbexcaxe4xb3xf6xd6xd0xcexc4xd7xd6xb7xfbxd2xbbxb5xe3xb6xbcxb2xbbxb7xbdxb1xe3'
    >>> 

    所以说,编码有时候造成的BUG会让人痛不欲生,历史遗留问题,Python 2.x版本虽然支持Unicode,但在语法上需要'xxx'u'xxx'两种字符串表示方式。

    而在Python 3.x版本中,'xxx'u'xxx'被统一成Unicode编码,即写不写前缀u都是一样的,而以字节形式表示的字符串则必须加上b前缀:b'xxx'

    而在3.x版本中:

    >>> str="python 3.x 版本输出中文字符很方便"
    >>> str
    'python 3.x 版本输出中文字符很方便'
    >>> 

    格式化输出

    我们经常会输出像 'XXX先生/女士,您好!您本月信用卡的消费数额为XXXX元,透支XXXX元' 这样的句式,因此我们需要格式化输出。

    常见的占位符有:

    %d 整数 
    %f 浮点数 
    %s 字符串 
    %x 十六进制整数 

    格式化整数和浮点数还可以指定是否补0(最后一位四舍五入)。

    >>> '%f' %1.23456789
    '1.234568'
    >>> '%.3f' %1.23456789
    '1.235'

    如果不太确定用哪个,可以用%s,它会把任何数据类型转换为字符串。

    >>> '%s先生/女士,您好!您本月信用卡的消费数额为%d元,透支%d元' %('皇家理工',6666,2222)
    '皇家理工先生/女士,您好!您本月信用卡的消费数额为6666元,透支2222元'
    >>> '%s先生/女士,您好!您本月信用卡的消费数额为%s元,透支%s元' %('皇家理工',6666,2222)
    '皇家理工先生/女士,您好!您本月信用卡的消费数额为6666元,透支2222元'
    >>> 

    当日小结:字符编码格式,在2.x主流的日子还是个痛啊。

    联系作者:legendary999@foxmail.com 本文版权归作者所有,欢迎转载,演绎或用于商业目的,但是必须说明本文出处(包含链接)。
  • 相关阅读:
    Java第9次作业--接口及接口回调
    Java第8次作业--继承
    软件工程第三次作业——关于软件质量保障初探
    Java第7次作业--访问权限、对象使用
    Java第6次作业--static关键字、对象
    Java第5次作业--对象的创建与使用
    20194629 自动生成四则运算题第一版报告
    软件工程第一次作业
    今天开通博客啦!
    1170. Compare Strings by Frequency of the Smallest Character
  • 原文地址:https://www.cnblogs.com/GoGoing/p/3938389.html
Copyright © 2011-2022 走看看