一、类型转换:str可以把任意其他类型都转化为字符串
print(str({'a': 1, 'b': 2})) # 结果为 {'a': 1, 'b': 2} ,类型为str
二、内置功能:
前言:因为字符串为不可变类型,所以对字符串进行的所有操作,若有值产生,一定是产生新值,对原字符串没有影响。
1、按索引取值:理同列表,可正向取,亦可反向取。
a = 'qwer'
print(a[2]) # 按索引取字符串第三个字符,结果为 e
print(a[-1]) # 按索引取字符串最后一个字符,结果为 r
2、切片:索引的拓展功能,从一个大字符串中拷贝出一个子字符串。
①基本用法:
x = 'abcdefg'
print(x[1:5]) # 限头限尾,取字符串的1号索引到4号索引,即结果为 bcde,尾号索引可以超过字符串长度,超过则都作为最长处理,即此处最长为7号索引,即分号右边输入大于等于8的值都视为8
print(x[:]) # 分号左右两边可以留空,分别表示头号索引为0和尾巴索引为最长,可只一遍留空,也可都留空,都留空,相当于完全拷贝了原字符串,即结果为 abcdefg
②步长与反向步长:
x = 'abcdefghijk'
print(x[1:10:3]) # 1号索引开始,每次加3,到9号索引为止取的值组成子字符串,即结果为 beh
print(x[-2:0:-2]) # 从倒数第二号索引开始,每次加2,到1号索引为止取的值组成子字符串,即结果为 jhfdb
print(x[::-1]) # 反向步长的拓展使用,可以得到字符串倒过来的新字符串,即结果为 kjihgfedcba
3、长度功能len:
a = 'abc d' # 空格也为字符,即结果为 5
print(len(a)) # 通过len得到字符串a长度为5,即结果为 5
4、成员运算符in和not in:判断一个小字符串是否在大字符串中。
print('ab' in 'ab c def') # 结果为 True
print('ab c' not in 'ab c def') # 结果为False
5、移除字符串左右两侧符号strip:
a = ' abc '
print(a.strip()) # 若strip不加具体内容,则默认移除空格,即结果为 abc
b = '****a**b**c*******'
print(b.strip('*')) # strip分别从字符串最左边和右边开始检索,遇到需要清除会一直检索,直到遇到不需要清除的则马上停止,即剩余中间部分不会再检索,所以结果为 a**b**c
c = '=*?a=b*c>*!=>'
print(c.strip('=*\?>!')) # strip的检索表示可以多种,每个都会按照单个的情况分别检索,所以结果为 a=b*c
d = '!!!abc!!!'
print(d.lstrip('!')) # 左移除lstrip,只从字符串最左边开始检索,所以结果为 abc!!!
e = '$$$abc$$$'
print(e.rstrip('$')) # 右移除lstrip,只从字符串最右边开始检索,所以结果为 $$$abc
6、切分功能split:把字符串按照某种分隔符号进行切分,分隔开的每个元素组成会组成一个列表。
a = 'abc def hij'
print(a.split()) # 若split不加具体内容,默认以空格为分隔符,即结果为 ['abc', 'def', 'hij']
b = 'abc*def*hij'
print(b.split('*')) # 指定分隔符为*,即结果为 ['abc', 'def', 'hij']
c = 'abc=def=hij'
print(c.split('=', 1)) # 指定分隔次数为1,即结果为 ['abc', 'def=hij']
d = 'abc:def:ghi'
print(d.rsplit(':',1)) # lsplit从右侧开始检索分隔符,即结果为 ['abc:def', 'ghi']
7、转化大小写lower和uppper:
a = 'ABCdef123'
print(a.lower()) # 把字符串中大写字母全部转变为小写字母,即结果为 abcdef123
print(a.upper()) # 把字符串中大写字母全部转变为小写字母,即结果为 ABCDEF123
8、判断字符串头尾字符是否为目标内容的starswith和endswith:
a = 'abcdefg'
print(a.startswith('abc')) # 结果为 True
print(a.startswith('ac')) # 结果为 False
print(a.endswith('fg')) # 结果为 True
print(a.endswith('gf')) # 结果为 False
9、把列表拼接成字符串join:前提:该列表元素全为字符串,然后按照某个分隔符,把这些元素组合成一个字符串。
a = ['a','b','c'] # 列表有三个元素,分别是 a b c
print('@'.join(a)) # 在每两个元素中间加上分隔符号@再组合成字符串,即结果为 a@b@c
10、替换字符串某些字符replace:
a = 'aaabbbaaa'
print(a.replace('aaa', 'AAA')) # 待替换字符写左边,替换的字符写右边,即结果为 AAAbbbAAA
print(a.replace('aaa', 'AAA', 1)) # 加上数量1,代表,从左往右替换,只执行一次,即结果为 AAAbbbaaa
11、数字相关isdigit,isnumberic,isdecimal:
a = '123'
print(a.isdigit()) # 结果为True
b = '123aaa'
print(b.isdigit()) # 结果为False
num1 = b'4' # bytes
num2 = u'4' # unicode,python3中无需加u就是unicode
num3 = '四' # 中文数字
num4 = 'Ⅳ' # 罗马数字
print(num1.isdigit()) # 结果为True
print(num2.isdigit()) # 结果为True
print(num3.isdigit()) # 结果为False
print(num4.isdigit()) # 结果为False
# 说明isdigit只能识别:num1、num2
print(num2.isnumeric()) # 结果为True
print(num3.isnumeric()) # 结果为True
print(num4.isnumeric()) # 结果为True
# isnumberic可以识别:num2、num3、num4
print(num2.isdecimal()) # True
print(num3.isdecimal()) # False
print(num4.isdecimal()) # False
# isdecimal只能识别:num2
12、其他了解性功能:
①find,rfind,index,rindex,count:
msg = 'hello egon hahaha'
print(msg.find('egon')) # 返回要查找的字符串在大字符串中的起始索引,结果为 6
print(msg.index('egon')) # 返回要查找的字符串在大字符串中的起始索引,结果为 6,此时作用与find一样
print(msg.find('xxx')) # 找不到会返回-1
print(msg.index('xxx')) # 找不到会抛出异常
msg = 'hello egon hahaha egon、 egon'
print(msg.count('egon')) # 统计小字符串在大字符串中出现的次数,结果为 3
②center,ljust,rjust,zfill:
print('egon'.center(10, '*')) # 原字符串居中,左右两边用*填充
print('egon'.ljust(10, '*')) # 原字符串居最左,右边用*填充
print('egon'.rjust(10, '*')) # 原字符串居最右,左边用*填充
print('egon'.zfill(10)) # 原字符串居最右,左边用0填充
③expandtabs:
a = 'aaa\tbbb'
print(a.expandtabs(3)) # 设置制表符代表的空格数为3,即结果为 aaa bbb
④captalize,swapcase,title:
print("hello world egon".capitalize()) # 把字符串的首字母转为大写
print("Hello WorLd EGon".swapcase()) # 把字符串的大小写反转
print("hello world egon".title()) # 把字符串的每个英文单词的首字母转为大写
13、is相关其他判断:
print('abc1'.islower()) # 字符串中的字母是否全为小写,结果为True
print('ABC1'.isupper()) # 字符串中的字母是否全为大写,结果为True
print('!Hello @World'.istitle()) # 字符串中的英文单词的首字母是否为大写,结果为True
print('123123aadsf'.isalnum()) # 字符串是否由字母或数字组成,结果为True
print('ad'.isalpha()) # 字符串是否由纯字母组成,结果为True
print(' '.isspace()) # 字符串是否由空格组成,结果为True
print('print'.isidentifier()) # 是否合法,关键字合法,结果为True
print('age_of_egon'.isidentifier()) # 等于变量名的命名规则,结果为True
print('1age_of_egon'.isidentifier()) # 结果为False