Python 中最常用的数据类型,我们可以使用引号 ( ' 或 " ) 来创建字符串。
一、是什么
1.不可变的字符序列
2.主流机制:Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。
主流机制的几种情况:(用交互模式进行检测)
- 字符串长度为0或1
- 字符串符合可标识符(数字、字母、下划线)
- 字符串只能在编译时进行驻留,而非运行时
【注】因为c只有在运行时才会将字符串连接。
4.【-5,256】之间的整数数字
5.强制驻留sys中intern方法
【注】Pycharm对字符串进行优化,所以用交互模式进行检验.
二、查询
1.index()字符串第一次出现的位置
s = 'hello,Python'
print(s.index('o')
4
2.rindex()字符串最后一次出现的位置
s = 'hello,Python'
print(s.rindex('o')
10
【注】如果查找不存在时会抛出ValueError异常
3.find()字符串第一次出现的位置
s = 'hello,Python'
print(s.index('o')
4
4. rfind()字符串最后一次出现的位置
s = 'hello,Python'
print(s.index('o')
10
【注】 如果查找不存在时会返回-1
三、大、小字母的转换
1.upper()所有的字符转为大写
s = 'hello,PYTHON'
print(s.upper())
HELLO,PYTHON
2.lower()所有字符串转为小写
sz = 'Python,Word'
print(sz.lower())
python,word
3.swapcase()所有字符串大写转小写,小写转大写
sz = 'Pyton,Word'
print(sz.swapcase())
pYTHON,wORD
4.capitalize()第一个字符转大写,其余转小写
sz = 'python,HELLO'
print(sz.capitalize())
Python,hello
5.title()每个单词首字母大写,其余转小写
sz = 'python,HELLO'
print(sz.title())#会一一排查下去
Python,Hello
【注】转换大小写字母的会开辟新的空间
四、对齐方式
1.center()居中;参数(指定宽度(如果小于原字符串长度会返回原字符串),奇数时向下取偶),指定填充符(默认空格) )
s = 'python,word'
print(s.center(20,'*'))
****python,word*****
2.ljust()左对齐
sz = 'python,hello'
print(sz.ljust(20,'-'))
python,hello---------
3.rjust()右对齐
sz = 'python,hello'
print(sz.rjust(20,'-'))
---------python,hello
4.zfill()右对齐;参数:只接受一个参数:字符串宽度(左边补0)
sz = 'python,hello'
print(sz.zfill(20))
print('-8841'.zfill(8))
000000000python,hello
-0008841
四、劈分
1. split()从左边开始劈分,默认空格为劈分点,返回结果为列表;通过sep参数改变劈分符;maxsplit参数设定最大劈分次数,剩余的为一个整体(劈分次数结束)。
s2 = 'hello|word|python'
print(s2.split('|'))
print(s2.split(sep = '|',maxsplit=1))
['hello', 'word', 'python']
['hello', 'word|python']
2.rsplit()从左边开劈分
s2 = 'hello|word|python'
print(s2.rsplit(sep = '|',maxsplit=1))
['hello|word', 'python']
五、判断
isidentifier() | 字符串是否合法(数字、字母、下划线组成) |
isspace() | 字符串是否全部由空白字符组成(回车、换行、水平制表符) |
isalpha() | 字符串是否全部由字母组成 |
isdecimal() | 字符串是否全部由十进制数组成 |
isnumeric() | 字符串是否全部由数字组成 |
isalnum() | 判断字符串是否由数字与字母组成(至少由一个字符) |
六、替换与合并
1. replace()替换;参数:(指定被替换的字串,替换的字符串,最大替换次数)
s2 = 'hello,hello,hello,hello'
print(s2.replace('he','Wr',2))
Wrllo,Wrllo,hello,hello
【注】原字符串不会发生改变。
2.join()合并;将列表或元组的字符串合并为一个字符串。
s3 = ['hello','Java','Python']
print('|'.join(s3))
s4 = ('hello','Java','100')
print(' '.join(s4))
print('&'.join('Python'))
hello|Java|Python
hello Java 100
P&y&t&h&o&n
七、比较
1.用比较运算符:==,> ,>=,<=,<,!=;规则:一个一个字符比较下去,不相同时不在进行比较.
print('apple'>'app')
print('applq'>'banana')
True
False
chr() | 将字符转换对应的ASCII值 |
ord() | 将ASCII值转换对应的字符 |
八、切片
s= 'hello,Python'
s1 = s[-6::1]
print(s1)
Python
九、格式化
%s | 占位符:字符串 |
%d | 占位符:整数 |
%f | 占位符:浮点数 |
name = '张三'
age = 26
print('我叫%s,今年%d岁' % (name,age))
我叫张三,今年26岁
{ }
print('我叫{0},今年{1}岁'.format(name1,age1))
我叫C罗,今年35岁
print('{0:.5}'.format(3.1415926))
print('{:10.3}'.format(3.1415926))# 共10位,3位小数;0是占位符可以省略.
print('%f' % 3.1415926)#默认保留6位数
3.1416
3.14
3.141593
【注】{ }的数字与format()中的位置时一一对应(从0开始)
f—string
name = '张三'
age = 26
print(f'我叫{name},年龄{age}')
我叫张三,年龄26
宽度与精度
%10d | 宽度为10(左边填充空格) |
%.3f | 保留3为小数(默认保留6位) |
%10.3f | 总宽度为10位,保留小数3位 |
print('%10.3f' % 3.1415926)
3.142
十、编码与解码
GBK | 在GBK这种编码格式中,一个中文占2个字节 |
UTF—8 | 在UTF-8编码格式中,一个中文占3个字节 |
【注】编码与解码的类型要一一对应
1.编码 encode()函数
s = '天涯何处无芳草'#七个字
print(s.encode(encoding="GBK"))
print(s.encode(encoding="UTF-8"))
b'\xcc\xec\xd1\xc4\xba\xce\xb4\xa6\xce\xde\xb7\xbc\xb2\xdd' 14
b'\xe5\xa4\xa9\xe6\xb6\xaf\xe4\xbd\x95\xe5\xa4\x84\xe6\x97\xa0\xe8\x8a\xb3\xe8\x8d\x89' 21
2.解码 decode()函数
byte = s.encode(encoding="UTF-8")#编码
print(byte.decode(encoding="UTF-8"))#解码
天涯何处无芳草
我也一位开始学习Python的小白,感兴趣可以关注私信我,一起讨论学习。^o^
奋进! ^o^