一、Python3 字符串的编码
编码 | 说明 |
---|---|
ASCII 编码 | 只有大小写英文字母、数字和一些符号等127个字符 |
(专用) | 中文的GB2312编码 日文的Shift_JIS编码 |
Unicode(统一) | u'字符串' \u四位十六进制数 |
Python 不支持单字符类型,单字符也在Python也是作为一个字符串使用
byt = b'Python'
bytes数据,只接受 ASCII 码这个范围的字符
- 编码
需要将文件保存到外设或进行网络传输时,就要进行编码转换,将字符转换为字节,以提高效率@二进制文件(b' ')
.encode(encoding='UTF-8',errors='strict')
将字符转换为字节 (默认编码是 UTF-8)
.decode(encoding='UTF-8',errors='strict')
将字节转换为字符
说明:出错默认报ValueError,除非errors是ignore或replace
二、创建字符串
可以使用单引号、双引号、三单引号和三双引号
三引号可以定义多行字符串
注意:当我们字符串中包含单引号(')使用双引号创建字符串;
字符串包含双引号(")使用单引号创建。三个引号(''')里面能出现单引号双引号回车键等,三个引号中字符串会保持传入的格式
三、操作字符串
注意:所有的字符串函数都是有返回值的,默认inplace = False
- 特性
属于序列,具有序列的通用操作
索引(indexing)
切片(slicing)
迭代(iteration)
加(adding)
乘(multiplying)
- 查/改/增/删
查
str[start: end: step]
切片
str[::2] 隔两个截取
str[::-1]倒序
find(sub [,start [,end]])
返回索引值,没有返回值为-1
rfind()
从右向左查同find
index(sub [,start [,end]])
查不到会报错
rindex()
从右向左返回索引值同index改(替换)/增(拼接)
replace(old, new[, count])
指定字符替换为新的字符,可指定个数
expandtabs([n])
将字符串中(tab符号)\t转换成n个空格
format_map()
格式化输出,以字典形式存储key-value数据
maketrans()
+translate(table [,deletechars])
根据参数table=maketrans给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到deletechars参数中
+
拼接
.join([str1, str2])
删
strip()
移除字符串头尾指定的字符(默认为空格或换行符)或字符序列(多个字符亦可)
lstrip()
移除字符串头
rstrip
移除字符串尾
- 排序/遍历/统计
统计
len()
.count(sub[, start[, end]])
区间内某个字符的个数
- 内置函数:判断
in/not in
isalnum()
是否只包含字母或数字
isalpha()
是否只包含字母
isdecimal()
是否是十进制正整数
isdigit()
是否只包含数字
isdentifier()
是否是python中的标识符
isupper()
字符串字母是不是都是大写
islower()
字符串字母是不是都是小写
isnumeric()
是不是数字,无论中文,只要是数字就能判断
isprintable()
是否可打印
isspace()
是否都是空格,tab等
istitle()
是否所有字符首字母大写
startswith(prefix[, start[, end]])
是否是字符串或字符开头
endswith(suffix[, start[, end]])
是否是字符串或字符结尾
- 内置函数:格式化字符串+转义
格式化
'%s%s'%(str1,str2)
'{}{}'.format(str1, str2)
capitalize()
字符串首字母大写
title()
字符串中所有单词的首字母大写
upper()
全部大写
lower()
全部小写
swapcase()
大小写互换
center()
居中对齐:指定宽度和填充字符(注意:如果fillchar超过1个长度或为非字符串或为汉字,则会报出异常)
ljust()/rjust()
指定字符宽度填充(左/右对齐)
zfill()
右对齐:不足宽度补零
%
之后示例:str = format('%02d-%02d-%s' %(a, b, c))
+
右对齐,正数前加正号,负数前加负号
-
左对齐,正数前无符号,负数前加负号
空格 右对齐;正数前加空格,负数前加负号
0
右对齐,正数前无符号,负数前加负号,用0填充
%s
字符串
%r
字符串采用repr()显示
%c
单个字符
%b
二进制整数 bin
%i
十进制整数 int
%o
无符号八进制 oct
%x
无符号十六进制 hex
%d
整数
%f
浮点数
%u
无符号整数
%e
科学记数法转义
r" "
或u" "
转义声明(大写R亦可)(多用于文件地址的输入和正则表达式)
\(置于行尾)
表示续行
\\
表示\符号
\'
单引号
\"
双引号
\b
退格(Backspace)
\e
转义
\n
换行
\v
纵向制表符
\t
横向制表符Tab
\r
回车(光标重新回到本行开头)
(补充:空行为\r\n)
\f
换页
- 内置函数:分割字符串(转化为列表)
split([sep [,maxsplit]])
默认空格作为分隔符
rsplit()
从右往左开始分割
partition(sep)
分割点为首次出现sep的地方
rpartition()
分割点为最后一次出现sep的地方
splitlines([keepends])
keepends是一个bool值,如果为真每行后而会保留行分割符
- 提取字符串数据(优先考虑正则表达式)
int(''.join(char for char in example if str.isdigit()))
提取数字
(''.join(char for char in example if str.alpha()))
提取字母
四、拓展
- 正则表达式模块re(Regular Expression)
常用正则表达式
re.findall('\d+', str)
寻找str中所有的数字及其1~n扩展
示例
注意:re库在进行字符串匹配时会默认采用“贪婪匹配”,也就是说会返回符合条件的最长字符串。通过在操作符后增加一个“?”可以将正则式变成最小匹配:
贪婪匹配与最小匹配
网友评论