字符串
1.字符串的创建
a = 'python'
b = "python"
c = '''pyhton'''
2.字符串的常用操作
2.1查询操作
方法 | 作用 |
---|
index() | 查找子窜substr第一次出现的位置,如果查找的字串不存在时,则抛出ValueError |
rindex() | 查找字串substr最后一次出现的位置,如果查找的字串不存在时,则抛出ValueError |
find() | 查找子窜substr第一次出现的位置,如果查找的子窜不存在,则返回-1 |
rfind() | 查找字串substr最后一次出现的位置,如果查找的字串不存在时,则返回-1 |
s = 'hello,hello'
print(s.index('lo'))
print(s.find('lo'))
print(s.rindex('lo'))
print(s.rfind('lo'))
print(s.find('k'))
print(s.rfind('k'))
2.2大小写转换操作
方法 | 作用 |
---|
upper() | 把字符串中所有字符都转换成大写字母 |
lower() | 把字符串中所有字符都转换成小写字母 |
swapcase() | 把字符串中所有大写字母都转换成小写字母,把所有小写字母都转换成大写字母 |
capitalize() | 把第一个字符转换为大写,把其余字符转换为小写 |
title() | 把每个单词的第一个字符转换为大写,把每个单词的剩余字符转换为小写 |
s = 'hello,python'
a = s.upper()
print(s.upper(), id(s.upper()))
print(s.lower(), id(s.lower()))
print(s, id(s))
s2 = 'hello,Python'
print(s2.swapcase())
print(s2.capitalize())
print(s2.title())
2.3 内容对其操作
方法 | 作用 |
---|
center() | 居中对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格;如果设置宽度小于实际宽度,则返回原字符串 |
ljust() | 左对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格;如果设置宽度小于实际宽度,则返回原字符串 |
rjust() | 右对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格;如果设置宽度小于实际宽度,则返回原字符串 |
zfill() | 右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度;如果指定的宽度小于等于字符串的长度,则返回字符串本身 |
s = 'hello,Python'
print(s.center(20, '*'))
print(s.ljust(20, '*'))
print(s.ljust(10))
print(s.ljust(20))
print(s.rjust(20, '*'))
print(s.rjust(20))
print(s.rjust(10))
print(s.zfill(20))
print(s.zfill(10))
print('-666'.zfill(8))
2.4劈分操作
方法 | 作用 |
split() | 从字符串的左边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表 |
通过参数sep指定劈分字符串时的劈分符 |
通过参数maxsplit指定劈分字符串的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独作为一部分 |
rsplit() | 从字符串的右边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表 |
通过参数sep指定劈分字符串时的劈分符 |
通过参数maxsplit指定劈分字符串的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独作为一部分 |
s = 'hello world python'
lst = s.split();
print(lst)
s1 = 'hello|world|python'
print(s1.split(sep='|'))
print(s1.split(sep='|', maxsplit=1))
print(s1.rsplit('|'));
print(s1.rsplit(sep='|', maxsplit=1))
2.5判断操作
方法 | 作用 |
---|
isidentifier() | 判定指定的字符串是不是合法的标识符 |
isspace() | 判断指定的字符串是否全部由空白字符串组成(回车、换行、水平制表符) |
isalpha() | 判断指定的字符串是否全部由字母组成 |
isdecimal() | 判断指定的字符串是否全部由十进制的数字组成 |
isnumeric() | 判断指定的字符串是否全部由数字组成 |
isalnum() | 判断指定的字符串是否全部由字母和数字组成 |
print('hello,python'.isidentifier())
print('hello'.isidentifier())
print('美羊羊'.isidentifier())
print('美羊羊_123'.isidentifier())
print('\n'.isspace())
print('\t'.isspace())
print('abc'.isalpha())
print('张三'.isalpha())
print('张三1'.isalpha())
print('123'.isdecimal())
print('123四'.isdecimal())
print('Ⅱ Ⅱ'.isdecimal())
print('123'.isnumeric())
print('123四'.isnumeric())
print('ⅡⅡ'.isnumeric())
print('abc1'.isalnum())
print('张三123'.isalnum())
print('abc!'.isalnum())
2.6替换与合并操作
方法 | 作用 |
replace() | 第一个参数指定被替换的子串,第2个参数指定替换字串的字符串,第3个参数指定替换次数 |
该方法返回替换后得到的字符串,替换前的字符串不发生变化 |
join() | 将列表或元组中的字符串合并成一个字符串 |
s = 'hello,python'
print(s.replace('python', 'Java'))
s1 = 'hello,python,python,python'
print(s1.replace('python','Java',2))
lst = ['hello', 'Java', 'python']
print('|'.join(lst))
print(''.join(lst))
t = ('hello', 'Java', 'python')
print(''.join(t))
print('*'.join('python'))
2.7比较操作
运算符:>,>=,<,<=,==,!= |
---|
比较规则: 首先比较两个字符串中的第一个字符,如果相等,则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串的所有后续字符不再被比较。 |
比较原理: 两个字符进行比较时,比较的是齐ordinal value(原始值),调用内置函数ord()可以得到指定字符的ordinal value。与内置函数ord()对应的是内置函数chr(),调用内置函数chr()时指定ordinal value可以得到其对应的字符。 |
print('apple' > 'app')
print('apple' > 'banana')
print(ord('a'), ord('b'))
print(ord('王'))
print(chr(97), chr(98))
print(chr(29579))
'''== 与 is 的区别
== 比较的是value
is 比较的是id是否相等'''
a = b = 'python'
c = 'python'
print(a == b)
print(b == c)
print(a is b)
print(a is c)
2.8切片操作
s [start : end : step] |
---|
第一个元素表示切片的起始位置,第二个元素表示切片的结束位置(不包括该下标),step代表切片的步长 |
未写start,默认起始位置为第一个;未写end,默认起始位置为最后一个;未写step,默认步长为1 |
s = 'hello,python'
s1 = s[:5]
s2 = s[6:]
s3 = '!'
newstr = s1 + s3 + s2
print(s, id(s))
print(s1, id(s1))
print(s2, id(s2))
print(newstr, id(newstr))
print(s[1:5:1])
print(s[::2])
print(s[::-1])
print(s[-6::1])
2.9格式化字符串操作
%作占位符 | %s:字符串;%i或%d:整数;%f:浮点数(见方法1) |
---|
{}作占位符 | ‘{0}{1}.format()’(见方法2) |
{}作占位符 | f-string(见方法3) |
name = '张三'
age = 20
print('我叫%s,今年%d岁' % (name, age))
print('我叫{0},今年{1}岁'.format(name, age))
print(f'我叫{name},今年{age}岁')
print('%10d' % 99)
print('%.3f' % 3.1415926)
print('%10.3f' % 3.1415926)
print('{0:.3}'.format(3.1415926))
print('{0:.3f}'.format(3.1415926))
print('{0:10.3f}'.format(3.1415926))
3.字符串的编码转换

- 编码:将字符串转换为二进制数据(bytes)
- 解码:将bytes类型的数据转换为字符串类型
s = "一日看尽长安花"
print(s.encode(encoding='GBK'))
print(s.encode(encoding='UTF-8'))
byte = s.encode(encoding='GBK')
print(byte.decode(encoding='GBK'))
byte = s.encode(encoding='UTF-8')
print(byte.decode('UTF-8'))