【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 \xb0\xe6\xb1\xbe\xca\xe4\xb3\xf6\xd6\xd0\xce\xc4\xd7\xd6\xb7\xfb\xd2\xbb\xb5\xe3\xb6\xbc\xb2\xbb\xb7\xbd\xb1\xe3'
>>>
所以说,编码有时候造成的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主流的日子还是个痛啊。
【Python④】python恼人的字符串,格式化输出的更多相关文章
- python的2种字符串格式化输出
字符串格式化代码(typecode) 法一: %格式使用下面的格式 %[(name)] [flags] [width][.precision] typecode (name)输出字典的value使用, ...
- Python中日期和时间格式化输出的方法
本文转自:https://www.jb51.net/article/62518.htm 本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化 ...
- python基础之 while 逻辑运算符 格式化输出等
1.while循环 while 条件: 循环体 while 条件: 循环体 else: 循环体 重点: 当条件为真的时候,就进入循环体,从上到下依次执行,执行完最后一条语句时,while并不是直接退出 ...
- Python基础(十五):Python的3种字符串格式化,做个超全对比!
有时候,为了更方便.灵活的运用字符串.在Python中,正好有3种方式,支持格式化字符串的输出 . 3种字符串格式化工具的简单介绍 python2.5版本之前,我们使用的是老式字符串格式化输出%s. ...
- [JS] 如何自定义字符串格式化输出
在其他语言中十分常见的字符串格式化输出,居然在 Javascript 中不见踪影,于是决定自己实现该方法,以下就是个人编写的最简洁实现: String.prototype.format = funct ...
- js 获取字符串的 像素 宽度 ----字符串格式化输出
function getLenPx(str, font_size) { var str_leng = str.replace(/[^\x00-\xff]/gi, 'aa').length; retur ...
- 字符串格式化输出、while循环、运算符、编码
1.字符串格式化输出 %占位符: %s => 字符串 %d=>整数型 %%=>转义 普通的% %()不能多,不能少,一一对应 f"{}"大括号里的内容一般都放变量 ...
- python字符串格式化输出
python格式化输出 python格式化输出有两种方式:百分号和format format的功能要比百分号方式强大,其中format独有的可以自定义字符填充空白.字符串居中显示.转换二进制.整数自动 ...
- Python 字符串格式化输出方式
字符串格式化有两种方式:百分号方式.format方式. 其中,百分号方式比较老,而format方式是比较先进的,企图替代古老的方式,目前两者共存. 1.百分号方式 格式:%[(name)][flags ...
- Python基础 | 字符串格式化输出及print()函数介绍
在写代码时,我们会经常与字符串打交道,Python中控制字符串格式通常有三种形式,分别是使用str%,str.format(),f-str,用法都差不多,但又有一些细微之差. 一起来看看吧~~~ 一. ...
随机推荐
- 连接MySQL错误:Can't connect to MySQL server (10060)
问题原因: 导致些问题可能有以下几个原因: 1.网络不通: 2.服务未启动: 3.防火墙端口未开放: ----防火墙端口未开放的可能性比较大
- C#利用HttpWebRequest进行post请求的示例(HTTPS)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- 1.NSNotification|远程通知|本地通知|激光推送
1. 通知在iOS中应用非常广泛,合理的应用通知可以减少冗余代码,使我们的代码层次结构变了更加的清晰明了,利于程序猿读写.它主要分为不可见通知可见通知两种: 1.1 不可见通知,主要是有系统发出的 ...
- Using GET_APPLICATION_PROPERTY in Oracle D2k Forms
Using GET_APPLICATION_PROPERTY in Oracle D2k Forms DescriptionReturns information about the current ...
- Android app开发知识小结
Android知识小结 这是一个知识的总结,所以没有详解的讲解. 一.分辨率Android中dp长度.sp字体使用.px像素.in英寸.pt英寸1/72.mm毫米 了解dp首先要知道density,d ...
- Treap
treap模板 期望复杂度为O(nlogn) 带合并的treap期望复杂度为O(nlognlogn) #include <bits/stdc++.h> ; struct tree{ int ...
- JQuery_DOM 节点操作之包裹节点
jQuery 提供了一系列方法用于包裹节点,那包裹节点是什么意思呢?其实就是使用字符串代码将指定元素的代码包含着的意思. <script type="text/javascript&q ...
- Evolutionary Computing: 5. Evolutionary Strategies(2)
Resource: Introduction to Evolutionary Computing, A.E.Eliben Outline recombination parent selection ...
- JS控制TABLE表格在任意一行下面添加一行(有待完善)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- RDLC中添加参数,用来显示报表中数据集之外的信息。
我添加了两个参数,首先后台: ReportParameter rp = ,,).ToString()); ReportParameter rp1 = new ReportParameter(" ...