Python学习笔记

Python学习笔记01-字符串

2018-10-01  本文已影响0人  明阳似海

字符串

字符串转换

ord()函数,将字符串的内存值显示成整数(将str的显示值转换为int,可以使用int(),如str1 = '123' i = int(str1) 则i = 123 ),chr()函数把整数依照ASCII或Unicode编码成字符串。

>>>ord('A')
65
>>> ord('中')
20013
>>>chr(66)
'B'
>>> chr(25991)
'文'
字符串编码

Python中bytes类型的数据用带b前缀的单引号或双引号表示:

x=b'ABC'

str类型与bytes类型的区别在于str默认使用Unicode编码,而bytes只占用一个字节ASCII编码。
以Unicode表示的str通过encode()方法可以编码为指定的bytes,如:

>>>'ABC'.encode('ascii')
b'ABC'
>>>'中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'

反过来,如果从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:

>>>b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'

如果bytes中只有一小部分无效字节,可以传入errors='ignore'忽略错误的字节:

>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'

len()函数计算的是字符数,如果希望获得字节数,需要转换为bytes类型。

>>>len('中文')
2
>>>len('中文'.encode('utf-8'))
6

在操作字符串是,经常会遇到str和bytes的互相转换,为了避免乱码问题,应当坚持使用UTF-8编码对str和bytes进行转换。由于python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存代码时,务必指定保存为UTF-8编码,当Python解释器读取源代码时,为了让它按UTF-8编码读取,通常在文件开头写上这两行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略此行;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

字符串格式化

在Python中格式化方式与C语言类似,用%实现,如下:

>>>'Hello,%s' % 'world'
'Hello, world'
>>>'Hi,%s, you have$%d.' % ('Michael',100000)
'Hi, Michael, you have $100000.

常见的占位符有:

占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

%需要使用%来转义,如%%;
使用format()函数进行字符格式化,字符串内使用{0}、{1}...,如下:

>>>'Hello,{0},float{1:1f}'.format('Marvin',17.125)
'Hello, Marvin,folat17.1'

学习资料源自廖雪峰的官方网站

上一篇下一篇

猜你喜欢

热点阅读