1、基本操作
字符串就是一字符组成的序列,所以序列的标准操作都支持(除修改)
>>>str='helloworld'
索引
>>>str[0]
'h'
分片
>>>str[0:5]
'hello'
相加(连接)
>>>str1='python'
>>>str+str1
'helloworldpython'
乘法(重复乘的次数)
>>> str*2
'helloworldhelloworld'
判断是否在字符串中(用in)
>>> 'X' in str
False
>>> 'h' in str
True
长度
>>> len(str)
10
最小值
>>> min(str)
d'
最大值
>>> max(str)
'w'
>>>str='helloworld'
索引
>>>str[0]
'h'
分片
>>>str[0:5]
'hello'
相加(连接)
>>>str1='python'
>>>str+str1
'helloworldpython'
乘法(重复乘的次数)
>>> str*2
'helloworldhelloworld'
判断是否在字符串中(用in)
>>> 'X' in str
False
>>> 'h' in str
True
长度
>>> len(str)
10
最小值
>>> min(str)
d'
最大值
>>> max(str)
'w'
*重点---------------------------------------
python的字符串不能修改哦,这个要切记 否则会报错
>>> str[0]='H'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
python的字符串不能修改哦,这个要切记 否则会报错
>>> str[0]='H'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
2、字符串格式化
>>> str='Hi %s'
>>> str % '2018'
'Hi 2018'
字符串中的%s 称为转换说明符 第二行的% 为字符串格式化操作符
转换说明符的格式如下(注意顺序)
(1)%字符 转换说明符的开始
(2)转换标志(可选)-表示左对齐,+显示正负号," "空格 表示正数之前保留空格,0 表示若值不够位数就用0填充
(3)最小字段宽度(可选)转换后的字符串的最后宽度 如果是* 就从值元组中读取
(4)点.后跟精度值(可选)精度值就是小数点后的位数,如果转换字符串,这个就是最大的字符宽度 如果是* 就会从元组中读取
(5)转换类型
转换类型 含义
d,i 带符号的十进制数
o 不带符号的八进制
u 不带符号的十进制
x 不带符号的十六进制(小写)
X 不带符号的十六进制(大写)
e 科学计数法表示浮点数(小写)
E 科学计数法表示浮点数(大写)
f,F 十进制浮点数
g 如果指数大于-4或者小于精度值则和e相同,其它情况和f相同
G 如果指数大于-4或者小于精度值则和E相同,其它情况和F相同
C 单字符(接收整数,或者一个字符的字符串)
r 字符串(使用repr转换)
s 字符串(使用str转换)
2.1简单转换
>>> '今年是%d' % 2018
'今年是2018'
>>> '今年是%X(16进制)' % 2018
'今年是7E2(16进制)'
>>> '今年是%s' % '2018'
'今年是2018'
2.2字段宽度和精度
>>> '%10f' % 3.14 #只有宽度没有精度,默认6位精度
' 3.140000'
>>> '%10.2f' % 3.14156 #有宽度有精度
' 3.14'
>>> '%.3f' % 3.14156 #只有精度
'3.142'
2.3符号 对齐 用0填充
在宽度之前还有一个标志位 可以是 0 + - ‘ ’空格
(1) 填充0 只在数值下有效,否则只是表示宽度
>>> '%010.1f' % 3.14
'00000003.1'
>>> '%010s' % 'he'
' he'
(2)左对齐
>>> '%-10s' % 'he'
'he '
(3) 空格,用于正数前面补充空格
>>> '% 5d' % 30
' 30'
(4)+ 显示符号
>>> print('%+5d\n%+5d' % (30,-10))
+30
-10
>>> str='Hi %s'
>>> str % '2018'
'Hi 2018'
字符串中的%s 称为转换说明符 第二行的% 为字符串格式化操作符
转换说明符的格式如下(注意顺序)
(1)%字符 转换说明符的开始
(2)转换标志(可选)-表示左对齐,+显示正负号," "空格 表示正数之前保留空格,0 表示若值不够位数就用0填充
(3)最小字段宽度(可选)转换后的字符串的最后宽度 如果是* 就从值元组中读取
(4)点.后跟精度值(可选)精度值就是小数点后的位数,如果转换字符串,这个就是最大的字符宽度 如果是* 就会从元组中读取
(5)转换类型
转换类型 含义
d,i 带符号的十进制数
o 不带符号的八进制
u 不带符号的十进制
x 不带符号的十六进制(小写)
X 不带符号的十六进制(大写)
e 科学计数法表示浮点数(小写)
E 科学计数法表示浮点数(大写)
f,F 十进制浮点数
g 如果指数大于-4或者小于精度值则和e相同,其它情况和f相同
G 如果指数大于-4或者小于精度值则和E相同,其它情况和F相同
C 单字符(接收整数,或者一个字符的字符串)
r 字符串(使用repr转换)
s 字符串(使用str转换)
2.1简单转换
>>> '今年是%d' % 2018
'今年是2018'
>>> '今年是%X(16进制)' % 2018
'今年是7E2(16进制)'
>>> '今年是%s' % '2018'
'今年是2018'
2.2字段宽度和精度
>>> '%10f' % 3.14 #只有宽度没有精度,默认6位精度
' 3.140000'
>>> '%10.2f' % 3.14156 #有宽度有精度
' 3.14'
>>> '%.3f' % 3.14156 #只有精度
'3.142'
2.3符号 对齐 用0填充
在宽度之前还有一个标志位 可以是 0 + - ‘ ’空格
(1) 填充0 只在数值下有效,否则只是表示宽度
>>> '%010.1f' % 3.14
'00000003.1'
>>> '%010s' % 'he'
' he'
(2)左对齐
>>> '%-10s' % 'he'
'he '
(3) 空格,用于正数前面补充空格
>>> '% 5d' % 30
' 30'
(4)+ 显示符号
>>> print('%+5d\n%+5d' % (30,-10))
+30
-10
3、字符串常用方法
>>> str='helloworld'
1、find
方法在字符串中查找子串,找到返回第1个位置的索引,如果没有找到返回-1
>>> str.find('or')
6
>>> str.find('LD')
-1
2、join 连接字串序列 split(分散)的逆方法
>>> strlist=['a','b','c','def'] #字符串序列
>>> sep='+' #连接符
>>> joinstr=sep.join(strlist)
>>> print(joinstr)
a+b+c+def
>>> joinstr.split('+') #按+进行拆分
['a', 'b', 'c', 'def']
3、lower 返回字串的全小写版 upper 返回字串的全大写版
>>> str='HELLOWorld'
>>> str.lower()
'helloworld'
>>> str.upper()
'HELLOWORLD'
4、replace(a,b) 将字符串中匹配的a,全替换为b
>>> str='10011001'
>>> str.replace('01','a')
'10a10a'
5、strip 删除字串两边的空格字串 不包含中间的哈 (在输入的时候防止多输入空格特别有用)
>>> str=' a a bbe '
>>> str.strip()
'a a bbe'
6、translate 依据转换表替换字符串
>>> s='asdfghjkl'
>>> maptab=str.maketrans('adl','123') #创建转换表,a转1,d转2,l转3,是一一对应的, 创建表 这和2.x不一样,搞了好久才搞明白
>>> s.translate(maptab) #将转码表传入
'1s2fghjk3'
>>> str='helloworld'
1、find
方法在字符串中查找子串,找到返回第1个位置的索引,如果没有找到返回-1
>>> str.find('or')
6
>>> str.find('LD')
-1
2、join 连接字串序列 split(分散)的逆方法
>>> strlist=['a','b','c','def'] #字符串序列
>>> sep='+' #连接符
>>> joinstr=sep.join(strlist)
>>> print(joinstr)
a+b+c+def
>>> joinstr.split('+') #按+进行拆分
['a', 'b', 'c', 'def']
3、lower 返回字串的全小写版 upper 返回字串的全大写版
>>> str='HELLOWorld'
>>> str.lower()
'helloworld'
>>> str.upper()
'HELLOWORLD'
4、replace(a,b) 将字符串中匹配的a,全替换为b
>>> str='10011001'
>>> str.replace('01','a')
'10a10a'
5、strip 删除字串两边的空格字串 不包含中间的哈 (在输入的时候防止多输入空格特别有用)
>>> str=' a a bbe '
>>> str.strip()
'a a bbe'
6、translate 依据转换表替换字符串
>>> s='asdfghjkl'
>>> maptab=str.maketrans('adl','123') #创建转换表,a转1,d转2,l转3,是一一对应的, 创建表 这和2.x不一样,搞了好久才搞明白
>>> s.translate(maptab) #将转码表传入
'1s2fghjk3'