1.字符串相关操作和函数
1.1 字符串相关运算符
1)+ —— 字符串1 + 字符串2 —— 将两个字符串合并成一个字符串
str1='12'
str2='ac'
print(str1+str2) #'12ac'
2)* —— 字符串1 * N、N*字符串 ——将字符串重复N次产生一个新的字符串
str1='12'
print(str1*2)
1.2 比较运算:>=、<=、>、<
1)两个字符串比较大小比较的是第一对不相等的字符的编码值的大小
print('ac0'>'Mccd')
print('abc'=='acb')
应用:比较字符大小来判断字符的类型
判断是否是数字字符:‘0’<=x<=‘9’
判断是否是小写字母:‘a’<=x<=‘z’
判断是否是字母:‘a’<=x<=‘z’ and ‘A’<=x<=‘Z’
判断是否是中文:’\u4e00’<=x<=’\u9fa5’
1.3 相关函数
print(max('axcvd451'))
print(sorted(ac12))
1)len —— len(字符串) —— 统计字符串中字符的个数
2)str —— str(数据) —— 将数据转化成字符串
a.所有的数据都可以转化成字符串
b.转化的时候直接在数据的打印值外加引号
str(10)
str(True)
str([1,2,3])
3)eval
eval(字符串) —— 将字符串的内容转化成有效代码的计算结果(去掉字符串的引号获取结果)
str1=eval('100')
print(str1,type(str1))
str2=eval('1.2')
print(str2,type(str2))
str3=eval('[1,2,3]')
print(str3,type(str3))
x=y=1
str4=eval('x+y')
print(str4,type(str4))
2.字符串相关方法
2.1 center、rjust、ljust、zfill
1)字符串.center(宽度, 填充字符) xabcx 2)字符串.rjust(宽度, 填充字符) xxabc 3)字符串.ljust(宽度, 填充字符) abcxx 4)字符串.zfill(宽度) == 字符串.rjust(宽度, ‘0’) 00abc
str1 = 'abc'
result1 = str1.center(7, 'x')
result1 = str1.center(6, 'x')
print(result1)
print(result1)
result2 = str1.rjust(7, 'x')
print(result2)
result3 = str1.ljust(7, 'x')
print(result3)
result4 = str1.zfill(7)
print(result4)
print('abc234'.center(3, '0'))
2.2 count
1)字符串1.count(字符串2) - 统计字符串1中字符串2的个数 2)字符串1.count(字符串2, 开始下标, 结束下标) - 统计字符串1中指定范围内字符串2出现的次数,范围:[开始下标, 结束下标)
str1 = 'how are you? Im fine, Thank you! and you?'
result = str1.count('you')
print(result)
result = str1.count('you', -7)
print(result)
2.3 endswith
1)字符串1.endswith(字符串2) - 判断字符串1是否以字符串2结束
print('abc123'.endswith('23'))
print('abc123'.endswith('32'))
2.4 find、rfind、index、rindex
1)字符串1.find(字符串2) - 获取字符串1中第一个字符串2出现的位置,如果字符串2不存在返回-1 2)字符串1.index(字符串2) - 获取字符串1中第一个字符串2出现的位置,如果字符串2不存在报错!
3)字符串1.find(字符串2, 开始下标, 结束下标) 4)字符串1.index(字符串2, 开始下标, 结束下标)
5)字符串1.-(字符串2) - 获取字符串1中最后一个字符串2出现的位置,如果字符串2不存在返回-1 6)字符串1.rindex(字符串2) - 获取字符串1中最后一个字符串2出现的位置,如果字符串2不存在报错!
7)字符串1.rfind(字符串2, 开始下标, 结束下标) 8)字符串1.rindex(字符串2, 开始下标, 结束下标)
str1 = 'how are you? Im fine, Thank you! and you?'
result = str1.find('you')
print(result)
result = str1.rfind('you')
result1 = str1.rfind('aou')
print(result)
print(result1)
2.5 isalnum、isalpha、isdigit、isnumeric、islower、isupper、isspace
1)字符串.isalnum() - 判断字符串中所有的字符是否全是数字、字母或者中文 2)字符串.isalpha() - 判断字符串中所有的字符是否是字母或者中文
3)字符串.isdigit() - 判断字符串中所有的字符是否全是数字(只把0~9看数字) 4)字符串.isnumeric() - 判断字符串中所有的字符是否全是数字字符(将所有独立存在表示一个数值的符号都看成数字)
5)字符串.islower() - 判断字符串中所有的字符是否全是小写字母 6)字符串.isupper() - 判断字符串中所有的字符是否全是大写字母 7)(常用!)字符.islower() - 判断指定字符是否是小写字母 8)(常用!)字符.isupper() - 判断指定字符是否是大写字母
9)字符串.isspace() - 判断字符串中所有的字符是否都是空白字符
x = 'K'
print(x.islower())
print(x.isupper())
x = '0232一34二三十百万千拾万'
print(x.isdigit())
print(x.isnumeric())
2.6 join(*)
1)字符串.join(序列) - 将序列中的元素通过指定的字符串连接成一个新的字符串 注意:序列中的元素必须全是字符串
list1 = ['abc', 'mn', 'xy']
result = ''.join(list1)
print(result)
result = '+'.join(list1)
print(result)
nums = [10, 23, 89, 902]
result = ''.join([str(x) for x in nums])
print(result)
nums = [10, 23, 89, 902]
result = ''.join([str(x)[0] for x in nums])
print(result)
2.7 lower、upper
1)字符串.lower() - 将字符串中所有的大写字母都转换成小写字母 2)字符串.upper() - 将字符串中所有的小写字母都转换成大写字母
print('Kashs234--HKAM28pm'.lower())
print('Kashs234--HKAM28pm'.upper())
2.8 strip、lstrip、rstrip
1)字符串.strip() - 删除字符串前后的空白字符 2)字符串.lstrip() - 删除字符串前面的空白字符 3)字符串.rstrip() - 删除字符串后面的空白字符
str1 = '\t \n\t abc 123 \t\n\t'
print('---', str1.strip(), '---', sep='')
print('---', str1.lstrip(), '---', sep='')
print('---', str1.rstrip(), '---', sep='')
2.9 maketrans、translate(一般两个函数结合使用)
1)str.maketrans(字符串1, 字符串2) - 让字符串1中的字符与字符串2中的字符创建一个对应关系表 注意:字符串1的长度和字符串2的长度必须一致,字符串1中的字符不重复,字符串2中的字符可以重复
2)字符串.translate(字符对应关系表) - 将字符串中的字符按照字符对应关系表对字符进行替换
例如: str.maketrans('abc', '123') - 建立一个a和1对应,b和2对应,c和3对应的关系表
t=str.maketrans('1234','aaaa')
r='15248612653'.translate(t)
print(r)
week = '星期2'
table = str.maketrans('1234567', '一二三四五六天')
print(week.translate(table))
2.10 replace(*)
1)字符串1.replace(字符串2, 字符串3) - 将字符串1中所有的字符串2都替换成字符串3
2)字符串1.replace(字符串2, 字符串3, N) - 将字符串1中前N个字符串2都替换成字符串3
str1 = 'how are you? Im fine, Thank you! and you?'
result = str1.replace('you', 'ME')
print(result)
result = str1.replace('you', 'ME', 2)
print(result)
result=str1.replace('you','me',-5)
print(result)
2.11 split(*)
1)字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串1进行切割,返回一个列表 2)字符串1.split(字符串2, N) - 将字符串1中前N个字符串2作为切割点对字符串1进行切割
str1 = '123abcxyabcmn'
print(str1.split('abc'))
str1='1233211231567'
print(str1.split('1',2))
3.字符串格式化
字符串格式化背景:一个字符串内容中可能有部分数据是变化的
3.1字符串拼接
name='小明'
age=18
message = name + '今年' + str(age) + '岁!'
print(message)
3.2格式字符串
1)包含格式占位符的字符串 % (数据1, 数据2,…)
格式占位符: %s - 字符串占位符(C、java);python中可以给任何类型的数据占位 %d - 整数占位符,可以给任何数字占位 %f - 浮点数占位符(默认保留6位小数)(四舍五入) %.Nf - 浮点数占位符,保留N位小数 %c - 字符占位(可以填充字符或者字符编码值)
str1 = '%s===%d===%.2f==%c' % ([10, 20], 23.90, 34.237282, 97)
print(str1)
3.3f-string
1)基本用法: {表达式}
在字符串的最前面加f,然后在字符串中通过{}来确定变化的部分
注意: {}中的内容可以是任何有结果的表达式,表达式的结果就是字符串填充内容
a, b = 10, 'abc'
result = f'{a * 3 > 20}=={b[-1]}'
print(result)
result = f'{a * 3 > 20}=={b.upper()}'
print(result)
2)加参数 - {表达式:参数}
a.参数1—— :.Nf - 控制保留N位小数
money = 16890.2823
print(f'月薪:{money:.2f}')
b.参数2——:,
逗号和小数一起用 - :,.Nf
money = 1900000
print(f'年薪:{money * 12:,}')
print(f'年薪:{money * 12:,.2f}')
c.:填充字符>长度 、:填充字符<长度(注意:如果填充字符没有,用空格填充,大于小于符号控制填充字符在前还是在后)
num = 5
study_id = f'2017{num:0>3}'
print(study_id)
num=5
print(f'你好{num:x<5}!')
num1 = 19
num2 = 2367
print(f'{num1:>4}')
print(num2)
|