Python的字符串是由单引号‘’和双引号“”括起来的任意文本。
(1)如果文本本身包含单引号,则用双引号来括。
例如"I'm a teacher"
(2)如果文本本身包含双引号,则用单引号来括。
例如 'They say: " How are you " '
(3)如果既包含单引号又包含双引号,则需要借助转义字符 \ 来表达。
例如 ' I\'m \"OK\"! ' 表示字符串I'm "OK"!
这里 \' 表示字符串中的单引号, \" 表示字符串中的双引号
(4)转义字符是 ‘\’ 开头的特殊功能字符
\n表示回车换行, \t表示tab键, \\表示‘\‘自己等等。
(5)如果一个字符串中含有%,则是用%%来表示一个%,因为%本身也是一个格式说明符
(6)'''...'''的格式表示多行内容。
例如:'''line1
line2
line3'''
(7)字符编码
最初用8bit数字来存储文本,可表达255个字符。ASCII码。(美国人发明)
中文需要两个字节,并且不能与ASCII冲突,所以,中国制定了GB2312编码。
日文Shift_JIS,韩文Euc-kr。。。。。。 多语言混合出现乱码。
Unicode
鉴于上述情况,人们发明了Unicode编码,把所有语言都统一到一套编码里。
现代操作系统和大多数编程语言都直接支持。
UTF-8
Unicode有一个缺点,那就是编码长度是固定的。它要兼顾像中文这样两个字节的编码。而两个字节表达一个英文字母,看起来确实太奢侈了,于是,人们发明了Unicode,可变长编码,1-6个字节。英文字母1个字节,汉字通常3个字节,生僻字符4-6字节。
计算机系统通用的字符编码工作方式如下图:
(8)几个字符串方法
ord()函数获取字符的整数表示。
chr()函数把编码转换为对应的字符。
例如:chr(25991)结果为‘文’
可以直接用\u开头加十六进制数表示字符
例如:‘\u4e2d\u6587 ’ 表示‘中文’
字符串从内存到磁盘(Unicode->bytes)
例如:‘abc’ -> b‘abc’(每个字符1个字节)
encode()方法可以编码为指定的bytes。
例如:'ABC'.encode('ascii’)
'中文'.encode('utf-8’)
decode()方法
将从磁盘或网络读到的bytes变成str
b'ABC'.decode('ascii’)
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8’)
如果有一小部分无效字节,可忽略。
b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')