python字符串
-
- 字符串
-
- 1.字符串的创建
- 2.字符串的常用操作
-
- 2.1查询操作
- 2.2大小写转换操作
- 2.3 内容对其操作
- 2.4劈分操作
- 2.5判断操作
- 2.6替换与合并操作
- 2.7比较操作
- 2.8切片操作
- 2.9格式化字符串操作
- 3.字符串的编码转换
字符串
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'))