您的位置:首页 > 编程语言 > Python开发

[笨鸟先飞]-python入门学习教程(二)

2018-03-11 23:01 204 查看
Python基础概念之数据类型与字符串编码

数据类型

计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:
整数:python可以处理任意大小的整数。
浮点数:浮点数即为小数,只是按照科学计数法来说的话,小数点的位置会发生改变被称为浮点数,存在着四舍五入的误差。
字符串:字符串以单引号
'
或双引号
"
括起来的任意文本,比如
'123'
"abc"
等等,如果字符串内包含'与"可以采用转义符\来表示。比如:
print('what\'s\"wrong\"?')
what's"wrong"?布尔值:布尔值和布尔代数的表示完全一致,一个布尔值只有
True
False
两种值,要么是
True
,要么是
False,布尔值可以用
and
、[code]or
not
运算。[/code]3>2
True
5>6
False
3>2 and 5>4
True
3>2 or 5<1
True
not1>2
True
空值:空值不为0,为none。
字符串与编码
字符串是一种数据类型,但是其比较特殊的是其编码问题计算机只能处理数字,必须先把文本转化为数字才能进行处理,最早采用8比特作为一个字节,计算机是美国人发明的,最早的127个字符编码到计算机的编码表被称为ASCII编码。在处理中文时,中国制定了GB2312编码。当世界各国为自己本国的语言制定各种标准时,就会出现各种乱码情况。
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
其作用就是能够使计算机实现跨语言、跨平台的文本转换及处理,Unicode 编码系统,可分为编码方式和实现方式两个层次。

新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。
所以,本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的
UTF-8
编码。UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间。

搞清楚了ASCII、Unicode和UTF-8的关系,我们就可以总结一下现在计算机系统通用的字符编码工作方式:
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件:



浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器:



所以你看到很多网页的源码上会有类似
<meta charset="UTF-8" />
的信息,表示该网页正是用的UTF-8编码。
Python字符串
Python中的字符串是以unicode编码的,支持多种语言。
例如:print('我爱你一万年python!')
我爱你一万年python!对于单个字符的编码,Python提供了
ord()
函数获取字符的整数表示,
chr()
函数把编码转换为对应的字符:
例如:ord('B')
66
ord('我')
25105
chr(520)
'Ȉ'
由于Python的字符串类型是
str
,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把
str
变为以字节为单位的
bytes

Python对
bytes
类型的数据用带
b
前缀的单引号或双引号表示:
x = b'ABC'
要注意区分
'ABC'
b'ABC'
,前者是
str
,后者虽然内容显示得和前者一样,但
bytes
的每个字符都只占用一个字节。
以Unicode表示的
str
通过
encode()
方法可以编码为指定的
bytes
,例如:
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
要计算
str
包含多少个字符,可以用
len()
函数:
>>> len('abcdefg')
7
>>> len('中文')
2
len()
函数计算的是
str
的字符数,如果换成
bytes
len()
函数就计算字节数:
>>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
格式化

python中如何输出格式化的字符串。
例如:'Hello, %s' % 'world'
'Hello, world'
'hello,%s,you score %d.'%('jack',99)
'hello,jack,you score 99.'

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息