|---------------------|--------------------------------------------------|
| 方法名 | 描述说明 |
| str.lower() | 将str字符串全部转化为小写字母,结果为一个新的字符串 |
| str.upper() | 将str字符串全部转化为大写字母,结果为一个新的字符串 |
| str.split(sep=None) | 将str按照指定的分隔符sep分隔,结果为列表类型 |
| str.count(sub) | 结果为sub这个字符串在str中出现的次数 |
| str.find(sub) | 查询sub这个字符串在str中是否存在,如果不存在结果为-1,如果存在结果为sub首次出现的索引 |
| str.index(sub) | 功能与find相同,区别在于要查询的sub不存在时程序报错 |
| str.startswith(s) | 查询字符串str是否以子串s开头 |
| str.endswith(s) | 查询字符串str是否以子串s结尾 |
python
#具体使用示例
#大小写
s1='Hello'
new_s2=s1.lower()
print(s1,new_s2)
new_s3=s1.upper()
print(new_s3)
#字符串的分隔
e_mail='sa!123.com'
lst=e_mail.split('!')
print('前',lst[0],'后',lst[1])
#统计数
print(s1.count('o'))
#检索操作
print(s1.find('o'))
print(s1.find('p'))
print(s1.index('o'))
#print(s1.index('p')
#判断前后缀
print(s1.startswith('p'))
print(s1.startswith('H'))
print('demo.py'.endswith('.py'))
print('text.txt'.endswith('.txt'))
字符串是不可变类型
|----------------------------|-----------------------------------|
| 方法名 | 描述说明 |
| str.replace(old,news) | 使用news代替所有old字符串,结果为一个新的字符串 |
| str.center(width,fillchar) | 字符串str在指定宽度范围内居中,可以使用fillchar进行填充 |
| str.join(iter) | 在iter后面每个元素都增加一个新的字符串str |
| str.strip(chars) | 从字符串中去掉左侧和右侧chars中列出的字符串 |
| str.lstrip(chars) | 从字符串中去掉左侧chars中列出的字符串 |
| str。rstrip(chars) | 从字符串中去掉右侧chars中列出的字符串 |
python
#方法2
s='HelloWorld'
#字符串的替换
new_s=s.replace('o','你好',1)##1表示只会替换第一个o
print(new_s)
print(s.center(20))
print(s.center(20,'*'))
s=' Hello World '
print(s.strip())#去除左右的空格
print(s.lstrip())
print(s.rstrip())
#去掉指定的字符
s3='dl-Helloworld'
print(s3.strip('ld'))#与ld顺序无关
print(s3.lstrip('ld'))
print(s3.rstrip('dl'))
#三种结果如下
# -Hellowor
# -Helloworld
# dl-Hellowor
使用格式化字符串操作
用格式化字符串可以连接各种字符串均不会报错
python
#格式化字符串
name='马冬梅'
age=18
score=98.5
print('姓名:%s,年龄:%d,成绩:%f'%(name,age,score))
#(2)f-string
print(f'姓名:{name},年龄:{age},成绩:{score}')
#(3)使用字符串的format方法
print('姓名:{0},年龄:{1},成绩:{2}'.format(name,age,score))
print('姓名:{2},年龄:{0},成绩:{1}'.format(age,score,name))#format里面的顺序根据前面的{}中数字的定义来看
格式化字符串详细的格式大体与C语言差不多
python
s='helloworld'
print('{0:*<20}'.format(s))#字符串的显示宽度为20,左对齐,空白部分使用*填充
print('{0:*>20}'.format(s))#字符串的显示宽度为20,右对齐,空白部分使用*填充
print('{0:*^20}'.format(s))#表示居中对齐
#居中
print(s.center(20,'*'))
#千位分隔符(只适用于整数和浮点数)
print('{0:,}'.format(987654321))
print('{0:,}'.format(987654321.789345))
# 987,654,321
# 987,654,321.789345
#浮点数小数部分的精度
print('{0:.2f}'.format(3.1415926))
#字符串类型,表示是最大的显示长度
print('{0:.5}'.format('helloworld'))
#3.14
# hello
#整数类型
a=425
print('二进制:{0:b},十进制:{0:d},八进制:{0:o},十六进制:{0:x},十六进制:{0:X}'.format(a))
# 二进制:110101001,十进制:425,八进制:651,十六进制:1a9,十六进制:1A9
#浮点数类型
b=3.1415926
print('{0:.2f},{0:.2E},{0:.2e},{0:.2%}'.format(b))
# 3.14,3.14E+00,3.14e+00,314.16%
字符串的编码和解码
bytes类型表示二进制类型
str-编码->bytes-解码->str
python
#字符串的编码
s='伟大的中国梦'#6个字符
scode=s.encode(errors='replace')#默认为utf-8,因为utf-8中文占3个字节
print(scode)
scode_gbk=s.encode('gbk',errors='replace')#gbk中中文占2个字节
print(scode_gbk)
#编码出错问题
s2='耶(^-^)V😊'
scode_error=s2.encode('gbk',errors='replace')
print(scode)
scode_error=s2.encode('gbk',errors='ignore')
print(scode)
# scode=s2.encode('gbk',errors='strict')
# print(scode)
#解码
print(bytes.decode(scode_gbk,'gbk'))
print(bytes.decode(scode,'utf-8'))
#编码与解码一一对应,gbk-->gbk,utf-8--->utf-8
数据的验证
|-----------------|----------------------|
| 方法名 | 描述说明 |
| str.isdigit() | 所有字符都是(阿拉伯数字) |
| str.isnumeric() | 所有字符都是数字 |
| str.isalpha() | 所有字符都是字母(包含中文字符) |
| str.islower() | 所有字符都是小写 |
| str.isupper() | 所有字符都是大写 |
| str.istitle() | 所有字符都是首字母大写 |
| str.isalnum() | 所有字符都是数字或字母包含中文字符 |
| str.isspace() | 所有字符都是空白字符(\n,\t等) |
python
print('123'.isdigit())#True
print('一二三'.isdigit())#False
print('0b1010'.isdigit())#False
#综上,对于isdigit而言,只有阿拉伯数字可以被识别
print('123'.isnumeric())#True
print('一二三'.isnumeric())#Ture
print('0b1010'.isnumeric())#False
#对于isnumeric而言阿拉伯数字,汉字,罗马数字都可以被识别,但是二进制的不可以被识别
print('hello你好'.isalpha())#True
print('hello你好123'.isalpha())#False
print('hello你好一二三'.isalpha())#True
#isalpha------------------阿拉伯数字不可以,罗马数字不可以,但是汉字的可以
print('hello你好'.isalnum())#True
print('hello你好123'.isalnum())#True
print('hello你好一二三'.isalnum())#True
#isalnum------------------罗马数字都可以识别
print('@'*20)
print('Helloworld'.islower())#False
print('helloworld'.islower())#Ture
print('hello你好'.islower())#Ture
#只要有大写就报错
print('@'*20)
print('HelloWOrld'.isupper())#False
print('HELLOWORLD'.isupper())#Ture
print('HELLO你好'.isupper())#Ture
#只有有小写字母就报错,其他情况不报错
print('Hello'.istitle()) # #Ture
print('HelloWorld'.istitle())#False
print('Hello World'.istitle())#Ture
print('Hello world'.istitle())#False
print('-'*20)
print('\t'.isspace())
print(' '.isspace())
print('\n'.isspace())
#都是Ture
python
#字符串的拼接
s1='hello'
s2='world'
#1
print(s1+s2)
#2
print(''.join([s1,s2]))
print('*'.join(['hello','world','pyton','java','php']))
print('你好'.join(['hello','world','pyton','java','php']))
# hello*world*pyton*java*php
# hello你好world你好pyton你好java你好php
#3
print('hello''world')
#4使用格式化字符串进行拼接
print('%s%s' %(s1,s2))
print(f'{s1}{s2}')
print('{0}{1}'.format(s1,s2))
字符串的去重操作
python
s='helloworldhelloworldabdhresx'
#(1)
new_s=''
for item in s:
if item not in new_s:
new_s+=item
print(new_s)
#(2)索引+not in
new_s2=''
for i in range(len(s)):
if s[i] not in new_s2:
new_s2+=s[i]
print(new_s2)
#3
new_s3=set(s)
lst=list(new_s3)
print(lst)
lst.sort(key=s.index)
print(''.join(lst))
++正则表达式++