当前位置: 首页 > news >正文

字符串及正则表达式

字符串的常用方法

#大小写转换
s1='HelloWorld'
new_s2=s1.lower()
print(s1,new_s2)new_s3=s1.upper()
print(new_s3)# 字符串的分隔
e_mail='ysj@126.com'
lst=e_mail.split('@')
print('邮箱名:',lst[0],'邮件服务器域名:',lst[1])print('---------------------------')
print(s1.count('o'))#0在字符中s1中出现了两次# 检索操作
print(s1.find('o'))# 0在字符中s1中首次出现的位置
print(s1.find('p'))#-1,没有找到print(s1.index('o'))
#print(s1.index('p'))#ValueError:substring not found 子串没有找到print('--------------------------')
# 判断前缀和后缀print(s1.startswith('H'))# True
print(s1.startswith('p'))# Falseprint('demo.py'.endswith('.py'))# True
print('text.txt'.endswith('.txt'))# True

s='HelloWorld'
#字符串的替换
new_s=s.replace( 'o','你好', 1)# 最后一个参数是替换次数,默认是全部替换
print(new_s)#字符串在指定的宽度范围内居中
print(s.center(20))
print(s.center(20,'*'))print('-------------------------------------')
# 去掉宇符串左右的空格
s='    HelLo    Word    '
print(s.strip())
print(s.lstrip())# 去除字符串左侧的空格
print(s.rstrip())#去除字符串右侧的空格print('-------------------------------------')
#去掉指定的宇符
s3='dl-Helloworld'
print(s3.strip('ld'))#与顺序无关
print(s3.lstrip('ld'))
print(s3.rstrip('dl'))

格式化字符串的三种方式

#(1)使用占位待进行格式化
name='马冬梅'
age=18
score=98.5
print('姓名:%s,年龄:%d,成绩:%f'%(name,age ,score))
print('姓名:%s,年龄:%d,成绩:%.1f'%(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详细格式控制

s='helloworld'
print('{0:*<20}'.format(s))#字符中的显示宽度为20,左对齐,空白部分使用*号填充
print('{0:*>20}'.format(s))
print('{0:*^20}'.format(s))
# 居中对齐
print(s.center(20, '*'))#千分位隔符(只适用于整数和浮点数)
print('{0:,}'.format(987654321))
print('{0:,}'.format(987654321.7865))#浮点数小数部分的精度
print('{0:.2f}'.format(3.1419826))
#字符串类型,表示是最大的显示长度
print('{0:.5}'.format('helloworld'))# hello#幕数炎型
a=425
print('二进制:{0:b},十进制:{0:d},八进制:{0:0},十六进制:{0:x},十六进制:{0:X}'.format(a))b=3.1415926
print('{0:.2f},{0:.2E},{0:.2e},{0:.2%}'.format(b))

字符串的编码和解码

s='伟大的中国梦'
#编码str->bytes
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='耶🤔'
scode_error=s2.encode( 'gbk',errors='replace')
print(scode_error)# 解码过程bytes->str
print(bytes.decode(scode_gbk, 'gbk'))
print(bytes.decode(scode, 'utf-8'))

数据验证的方法

#isdig1t()十进制的阿拉伯数字
print('123'.isdigit())# True
print('-二三'.isdigit())# False
print('0b1010'.isdigit())# False
print('ⅢⅢⅢ'.isdigit())# False
print('-'*50)
# 所有字符都是数字
print('123'.isnumeric())# True
print('一二三'.isnumeric())# True
print('0b1010'.isnumeric())# False
print('ⅢⅢⅢ'.isnumeric())# True
print('壹贰叁'.isnumeric())# Trueprint('-'*50)print('123'.isnumeric())
#所有宇荷都是字母(包含中文字符)
print('hello你好'.isalpha())# True
print('hello你好123'.isalpha())# False
print('hello你好一二三'.isalpha()) # True
print('hello你好!'.isalpha())# False
print('hello你好壹贰叁'.isalpha())# True
print('-'*50)#所有字符都是数字或字母
print('hello你好'.isalnum())# True
print('hello你好123'.isalnum())#True
print('hello你好一二三'.isalnum())#True
print('hello你好ⅢⅢⅢ'.isalnum())#True
print('hello你好壹贰叁'.isalpha())#True#判断字符的大小写
print('HelloWorld'.islower())# False
print('helloworld'.islower())# True
print('hello你好'.islower())# Trueprint('-'*50)
print('HelloWorld'.isupper()) # False
print('HELLOWORLD'.isupper()) # True
print('HELLO你好'.isupper())# True#所有字符都是首字母大写
print('Hello'.istitle())# True
print('HelloWorld'.istitle())# False
print('Helloworld'.istitle())# True
print('Hello World'.istitle())# True
print('Hello world'.istitle()) # False# 判断是否都是空白字符
print('-'*50)
print('\t'.isspace()) # True
print(' '.isspace())# True
print('\n'.isspace())# True

字符串的处理-字符串的拼接操作

s1='hello'
s2='world'
#(1)使用+进行拼接
print(s1+s2)#(2)使用字符串的join()方法
print(''.join([s1,s2]))#使用空字符电进行拼接print('*'.join(['hello','world','python','java','php']))
print('你好'.join(['hello','world','python','java','php']))#(3)直接拼接
print('hello''world')#(4)使用格式化字符串进行拼接
print('%s%s'%(s1,s2))
print(f'{s1}{s2}')
print('{0}{1}'.format( s1,s2))

字符串的处理-字符串的去重操作

s='helloworldhelloworldadfdfdeoodllffe'
#(1)字符串拼接及not in
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)# 通过集合去重+列表排序
news_s3=set(s)
lst=list(news_s3)
lst.sort(key=s.index)
print(''.join(lst))

正则表达式的简介及相关符号

re模块中match函数的使用

import re #导入
pattern='\d\.\d+'#+限定符,|d 0-9数字出现1次或多次
s='I study Python 3.11 every day'# 待匹配字符串
match=re.match(pattern,s,re.I)
print(match)# None
s2='3.11Python I study every day'
match2=re.match(pattern,s2)
print(match2)#<re.Match object;span=(0,4),match='3.11'>print('匹配值的起始位置:',match2.start())
print('匹配值的结束位置:',match2.end())print('匹配值的起始位置:',match2.start())
print('匹配值的结束位置:',match2.end())
print('匹配区间的位置元素:',match2.span())
print('待匹配的字符串:',match2.string)
print('匹配的数据:',match2.group())

re模块中search函数和findall函数的使用

import re
pattern=r'\d\.\d+'
s='I study Python3.11 every day Python2.7 I love you'
match=re.search(pattern,s)
print(match)#只找到3.11没有找到2.7s2='4.10 Python I study every day'
s3='I study Python every day'
match2=re.search(pattern,s2)
match3=re.search(pattern,s3)
print(match2)
print(match3)print(match2.group())
print(match.group())
import re
pattern=r'\d\.\d+'
s='I study Python3.11 every day Python2.7 I love you'
s2='4.10 Python I study every day'
s3='I study Python every day'lst=re.findall(pattern,s)
lst2=re.findall(pattern,s2)
lst3=re.findall(pattern,s3)print(lst)
print(lst2)
print(lst3)

re模块中sub函数和split函数的使用

import re
pattern='黑客|破解|反爬'
s='我想学习Python,想破解一些VIP视频,Python可以实现无底线反爬吗?'
new_s=re.sub(pattern,'XXX',s)
print(new_s)s2=('https://www.baidu.com/s?wd=ysj&rsv_spt=1')
pattern2='[?l&]'
lst=re.split(pattern2,s2)
print(lst)

总结

实战

实战1车牌归属地

lst=['京A8888','津B6666','吉A77766']
for item in lst:area=item[0:1]print(item,'归属地为:',area)

实战2 统计指定字符出现的次数

s='HelloPython,HelloJava,hellophp'
word=input('请输入要统计的字符:')
print('{0}在{1}一共出现了{2}'.format( word,s,s.upper().count(word)))

实战3 格式化输出商品的信息

lst=[['01','电风扇','美的',500],['02','洗衣机','TCL',1000],['03','微波炉','老板',400],
]
print('编号\t\t名称\t\t\t品牌\t\t单价')
for item in lst:for i in item:print(i,end='\t\t')print()# 换行#格式化
for item in lst:item[0]='0000'+item[0]item[3]='¥{0:.2f}'.format(item[3])print('编号\t\t\t名称\t\t\t品牌\t\t单价')
for item in lst:for i in item:print(i,end='\t\t')print()# 换行

http://www.dtcms.com/a/404242.html

相关文章:

  • 成都公司做网站多少钱马云是做网站的
  • 如何将自己做的网站江门网站制作报价
  • tensorrt安装 2025
  • 营销型企业网站建设方案旅游网站的网页设计
  • 医疗养生管理系统(AI问答、WebSocket及时通讯、Echarts图形化分析)
  • D触发器、JK触发器以及单稳态触发器、非稳态多谐振荡器在 XPU 设计中的使用情况
  • 没有网站可以做seo吴忠市建设局官方网站
  • 网站首页布局设计教程辽宁建设科技信息网网站
  • 纯静态网站品牌建设和品牌打造对企业的意义
  • 企业经营不是赌短期
  • 合肥市做网站的公司有哪些中国字体设计网站
  • vue 使用leaflet加载天地图
  • 网站做宣传网站建设钟振森
  • 怎么选择做网站的公司网店推广发展趋势有哪些
  • 做网站是如果盈利的河南 网站建设
  • 3g手机网站源码国外模板wordpress
  • 纯文字网站设计网站做备案关停会显示什么
  • 贵阳seo网站推广技巧新手做网站做那个
  • JVM 的垃圾处理机制
  • 马克杯网站开发做淘宝客需要自己建网站吗
  • 广州网站建设 推广公司哪家好手机网站制作器
  • 本地使用 Git 向 Gitee 推送项目的全过程、涉及的命令以及每个命令的作用
  • 【0基础学算法】前缀和(算法原理+经典例题)
  • 数据开放网站建设内容wordpress页面分页
  • 网站文章页图片大全win7系统做网站服务器系统
  • 永嘉县住房建设局网站公司网站建设审批流程
  • 鄂尔多斯建设局网站怎么查个人是否注册工商执照
  • 注册公司应该去哪个部门石家庄百度搜索引擎优化
  • 网站优化 图片动画设计的类型有哪些
  • 企业双线策略路由重定向