Python(字符串)

|---------------------|--------------------------------------------------|
| 方法名 | 描述说明 |
| 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))

++正则表达式++

相关推荐
龙哥说跨境3 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
科技探秘人3 分钟前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人4 分钟前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR9 分钟前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香11 分钟前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
q24985969314 分钟前
前端预览word、excel、ppt
前端·word·excel
小白学大数据19 分钟前
正则表达式在Kotlin中的应用:提取图片链接
开发语言·python·selenium·正则表达式·kotlin
小华同学ai19 分钟前
wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
前端·钉钉·飞书
flashman91120 分钟前
python在word中插入图片
python·microsoft·自动化·word
菜鸟的人工智能之路23 分钟前
桑基图在医学数据分析中的更复杂应用示例
python·数据分析·健康医疗