python字符处理函数 python字符操作函数

python 字符串提取信息方法总结 在日常项目中,我们经常会使用python从字符串中提取我们想要的信息,以下是各种提取信息方法的总结 。
格式python字符处理函数: str[beg:end:step]
描述: 字符串[开始索引:结束索引:步长]切取字符串为开始索引到结束索引-1内的字符串步长不指定时步长为1
举例:
print(str[::2])//::这里表示整个字符串,每两个位置提取一个
print(str[1:3])//提取第2个到第3个
print(str[2::])//截取2 - 末尾的字符
本小节介绍python字符处理函数了,处理字符串经常用到的一些函数方法 。
语法: str.find(str, beg=0, end=len(string))
描述: Python find() 方法检测字符串中是否包含子字符串 str,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1 。
语法: str.split(str="", num=string.count(str)).
描述: Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num 1 个子字符串.返回分割后的字符串列表,该方法可以讲字符串转化为列表处理 。
另外的: str.splitlines([keepends])按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符 , 如果为 True,则保留换行符 。
语法: str.partition(str)
描述: partition() 方法用来根据指定的分隔符将字符串进行分割 。如果字符串包含指定的分隔符,则返回一个3元的元组 , 第一个为分隔符左边的子串,第二个为分隔符本身 , 第三个为分隔符右边的子串 。
语法: str.replace(old, new, max)
描述: Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次 。
语法: str.strip([chars]);
描述: Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列 。:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符 。
语法: str.join(sequence)
描述: Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串 。
上述方法还有其变形,如str.rfind(),这代表从字符串右边开始处理 , 正常是从左边开始处理 。下表是其它常用的python字符串自带函数方法 。
正则表达式是一个特殊的字符序列,它能帮助python字符处理函数你方便的检查一个字符串是否与某种模式匹配 。本小节主要介绍Python中常用的正则表达式处理函数和正则表达式的书写规则 。
re 模块使 Python 语言拥有全部的正则表达式功能 。所以在python中使用正则表达式处理函数需要importre
语法: re.search(pattern, string, flags=0)
描述: re.search 扫描整个字符串并返回第一个成功的匹配 。匹配成功re.search方法返回一个匹配的对象,否则返回None 。
语法: re.sub(pattern, repl, string, count=0, flags=0)
描述: Python 的 re 模块提供了re.sub用于替换字符串中的匹配项 。
语法: pattern.findall(string, pos, endpos)
描述: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表 , 如果没有找到匹配的 , 则返回空列表 。注意: match 和 search 是匹配一次 findall 匹配所有 。
模式字符串使用特殊的语法来表示一个正则表达式:
Python常用的正则表达式处理函数详解 正则表达式是一个特殊的字符序列 , 用于简洁表达一组字符串特征 , 检查一个字符串是否与某种模式匹配 , 使用起来十分方便 。
在Python中 , 我们通过调用re库来使用re模块:
import re
下面介绍Python常用的正则表达式处理函数 。
re.match函数
re.match 函数从字符串的起始位置匹配正则表达式,返回match对象,如果不是起始位置匹配成功的话 , match()就返回None 。
re.match(pattern, string, flags=0)
pattern:匹配的正则表达式 。
string:待匹配的字符串 。
flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等 。具体参数为:
re.I:忽略大小写 。
re.L:表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境 。
re.M:多行模式 。
re.S:即 . , 并且包括换行符在内的任意字符(. 不包括换行符) 。
re.U:表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库 。
re.X:为了增加可读性,忽略空格和 # 后面的注释 。
import re#从起始位置匹配r1=re.match('abc','abcdefghi')print(r1)#不从起始位置匹配r2=re.match('def','abcdefghi')print(r2)
运行结果:
其中,span表示匹配成功的整个子串的索引 。
使用group(num) 或 groups() 匹配对象函数来获取匹配表达式 。
group(num):匹配的整个表达式的字符串,group() 可以一次输入多个组号,这时它将返回一个包含那些组所对应值的元组 。
groups():返回一个包含所有小组字符串的元组,从 1 到 所含的小组号 。
import res='This is a demo'r1=re.match(r'(.*) is (.*)',s)r2=re.match(r'(.*) is (.*?)',s)print(r1.group())print(r1.group(1))print(r1.group(2))print(r1.groups())print()print(r2.group())print(r2.group(1))print(r2.group(2))print(r2.groups())
运行结果:
上述代码中的(.*)和(.*?)表示正则表达式的贪婪匹配与非贪婪匹配 。
re.search函数
re.search函数扫描整个字符串并返回第一个成功的匹配,如果匹配成功则返回match对象,否则返回None 。
re.search(pattern, string, flags=0)
pattern:匹配的正则表达式 。
string:待匹配的字符串 。
flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等 。
import re#从起始位置匹配r1=re.search('abc','abcdefghi')print(r1)#不从起始位置匹配r2=re.search('def','abcdefghi')print(r2)
运行结果:
使用group(num) 或 groups() 匹配对象函数来获取匹配表达式 。
group(num=0):匹配的整个表达式的字符串,group() 可以一次输入多个组号,这时它将返回一个包含那些组所对应值的元组 。
groups():返回一个包含所有小组字符串的元组,从 1 到 所含的小组号 。
import res='This is a demo'r1=re.search(r'(.*) is (.*)',s)r2=re.search(r'(.*) is (.*?)',s)print(r1.group())print(r1.group(1))print(r1.group(2))print(r1.groups())print()print(r2.group())print(r2.group(1))print(r2.group(2))print(r2.groups())
运行结果:
从上面不难发现re.match与re.search的区别:re.match只匹配字符串的起始位置,只要起始位置不符合正则表达式就匹配失败,而re.search是匹配整个字符串,直到找到一个匹配为止 。
re.compile 函数
compile 函数用于编译正则表达式,生成一个正则表达式对象,供 match() 和 search() 这两个函数使用 。
re.compile(pattern[, flags])
pattern:一个字符串形式的正则表达式 。
flags:可?。?表示匹配模式,比如忽略大小写,多行模式等 。
import re#匹配数字r=re.compile(r'\d ')r1=r.match('This is a demo')r2=r.match('This is 111 and That is 222',0,27)r3=r.match('This is 111 and That is 222',8,27)print(r1)print(r2)print(r3)
运行结果:
findall函数
搜索字符串,以列表形式返回正则表达式匹配的所有子串,如果没有找到匹配的,则返回空列表 。
需要注意的是,match 和 search 是匹配一次,而findall 匹配所有 。
findall(string[, pos[, endpos]])
string:待匹配的字符串 。
pos:可选参数,指定字符串的起始位置,默认为0 。
endpos:可选参数 , 指定字符串的结束位置,默认为字符串的长度 。
import re#匹配数字r=re.compile(r'\d ')r1=r.findall('This is a demo')r2=r.findall('This is 111 and That is 222',0,11)r3=r.findall('This is 111 and That is 222',0,27)print(r1)print(r2)print(r3)
运行结果:
re.finditer函数
和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回 。
re.finditer(pattern, string, flags=0)
pattern:匹配的正则表达式 。
string:待匹配的字符串 。
flags:标志位,用于控制正则表达式的匹配方式,如是否区分大小写 , 多行匹配等 。
import rer=re.finditer(r'\d ','This is 111 and That is 222')for i in r:print (i.group())
运行结果:
re.split函数
将一个字符串按照正则表达式匹配的子串进行分割后,以列表形式返回 。
re.split(pattern, string[, maxsplit=0, flags=0])
pattern:匹配的正则表达式 。
string:待匹配的字符串 。
maxsplit:分割次数,maxsplit=1分割一次,默认为0 , 不限次数 。
flags:标志位,用于控制正则表达式的匹配方式 , 如:是否区分大小写,多行匹配等 。
import rer1=re.split('\W ','This is 111 and That is 222')r2=re.split('\W ','This is 111 and That is 222',maxsplit=1)r3=re.split('\d ','This is 111 and That is 222')r4=re.split('\d ','This is 111 and That is 222',maxsplit=1)print(r1)print(r2)print(r3)print(r4)
【python字符处理函数 python字符操作函数】 运行结果:
re.sub函数
re.sub函数用于替换字符串中的匹配项 。
re.sub(pattern, repl, string, count=0, flags=0)
pattern:正则中的模式字符串 。
repl:替换的字符串 , 也可为一个函数 。
string:要被查找替换的原始字符串 。
count:模式匹配后替换的最大次数,默认0表示替换所有的匹配 。
import rer='This is 111 and That is 222'# 删除字符串中的数字r1=re.sub(r'\d ','',r)print(r1)# 删除非数字的字符串r2=re.sub(r'\D','',r)print(r2)
运行结果:
到此这篇关于Python常用的正则表达式处理函数详解的文章就介绍到这了 , 希望大家以后多多支持!
Python处理字符串必备方法 字符串是Python中基本的数据类型,几乎在每个Python程序中都会使用到它 。
?、Slicing
slicing切片,按照一定条件从列表或者元组中取出部分元素(比如特定范围、索引、分割值)
?、****strip()
strip()方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列 。
在使用strip()方法时,默认去除空格或换行符,所以#号并没有去除 。
可以给strip()方法添加指定字符,如下所示 。
此外当指定内容不在头尾处时,并不会被去除 。
第一个\n前有个空格,所以只会去取尾部的换行符 。
最后strip()方法的参数是剥离其值的所有组合,这个可以看下面这个案例 。
最外层的首字符和尾字符参数值将从字符串中剥离 。字符从前端移除 , 直到到达一个不包含在字符集中的字符串字符为止 。
在尾部也会发生类似的动作 。
?、****lstrip()
移除字符串左侧指定的字符(默认为空格或换行符)或字符序列 。
同样的,可以移除左侧所有包含在字符集中的字符串 。
?、rstrip()
移除字符串右侧指定的字符(默认为空格或换行符)或字符序列 。
?、****removeprefix()
Python3.9中移除前缀的函数 。
和strip()相比 , 并不会把字符集中的字符串进行逐个匹配 。
?、removesuffix()
Python3.9中移除后缀的函数 。
?、****replace()
把字符串中的内容替换成指定的内容 。
?、****re.sub()
re是正则的表达式,sub是substitute表示替换 。
re.sub则是相对复杂点的替换 。
和replace()做对比,使用re.sub()进行替换操作 , 确实更高级点 。
?、****split()
对字符串做分隔处理,最终的结果是一个列表 。
当不指定分隔符时,默认按空格分隔 。
此外,还可以指定字符串的分隔次数 。
?0、****rsplit()
从右侧开始对字符串进行分隔 。
?1、****join()
string.join(seq) 。以string作为分隔符,将seq中所有的元素(的字符串表示)合并为一个新的字符串 。
?2、****upper()
将字符串中的字母,全部转换为大写 。
?3、****lower()
将字符串中的字母,全部转换为小写 。
?4、capitalize()
将字符串中的首个字母转换为大写 。
?5、****islower()
判断字符串中的所有字母是否都为小写,是则返回True,否则返回False 。
?6、isupper()
判断字符串中的所有字母是否都为大写,是则返回True,否则返回False 。
?7、****isalpha()
如果字符串至少有一个字符并且所有字符都是字母,则返回 True,否则返回 False 。
?8、isnumeric()
如果字符串中只包含数字字符,则返回 True,否则返回 False 。
?9、isalnum()
如果字符串中至少有一个字符并且所有字符都是字母或数字,则返回True,否则返回 False 。
?0、count()
返回指定内容在字符串中出现的次数 。
?1、****find()
检测指定内容是否包含在字符串中 , 如果是返回开始的索引值 , 否则返回-1 。
此外 , 还可以指定开始的范围 。
?2、rfind()
类似于find()函数,返回字符串最后一次出现的位置,如果没有匹配项则返回 -1 。
?3、startswith()
检查字符串是否是以指定内容开头,是则返回 True,否则返回 False 。
**
**
?4、****endswith()
检查字符串是否是以指定内容结束,是则返回 True , 否则返回 False 。
?5、****partition()
string.partition(str),有点像find()和split()的结合体 。
从str出现的第一个位置起,把字符串string分成一个3 元素的元组(string_pre_str,str,string_post_str),如果string中不包含str则 string_pre_str==string 。
?6、center()
返回一个原字符串居中,并使用空格填充至长度width的新字符串 。
?7、ljust()
返回一个原字符串左对齐,并使用空格填充至长度width的新字符串 。
?8、rjust()
返回一个原字符串右对齐,并使用空格填充至长度width的新字符串 。
?9、f-Strings
f-string是格式化字符串的新语法 。
与其他格式化方式相比 , 它们不仅更易读 , 更简洁 , 不易出错,而且速度更快!
?0、swapcase()
翻转字符串中的字母大小写 。
?1、zfill()
string.zfill(width) 。
返回长度为width的字符串,原字符串string右对齐,前面填充0 。
参考文献:
在Python中使用字符串调用函数已有字符串形式的函数名称,那么如何调用这个函数呢?
通过调用内置函数locals()和globals()返回的字典对象,就可以可以获得名称与对象的映射关系 。其中,locals()仅在全局范围内调用时可以获得函数对象 。我们来看以下的例子 。
需要注意的是,使用上述方法通过字符串调用函数时,为了系统的安全 , 防止执行任意函数,需要对函数名做一些处理 , 也就是使用统一的前缀为这些函数命名 。例如在上述例子中,使用前缀cmd_ 函数名的形式定义函数(cmd_help,cmd_sum) 。
在传入函数名字符串时,只传入函数名的后半部分(如"help","sum") , 由程序添加前缀后组成完整的函数名,再调用该函数 。
对于类的成员函数,则可以使用getattr()获得类成员函数 。
上述代码通过字符串调用了类成员函数,与前一段代码执行的结果相同 。
此外,还可以使用字典将字符串与函数对应起来调用,缺点就是每增加一个函数需要相应在字典对象中添加相应的键值,增加代码维护工作量 。
以上代码在Python 3.6以上运行通过 。
python基?。耗谥煤⒎椒ā⒆遄址笕?/h2>在写python程序时,常能用到一些函数和方法,总结一下,保存起来 , 方便查询 。
一、内置函数
# abs()获取数字绝对值
# chr(i)数字转换为字符类型
# divmod() 获取两个数值的商和余数
# enumerate() 将可遍历序列组合为索引序列
# float()转换为浮点数
# format() 格式化字符串
# int()转换为整数
# input() 接受用户输入内容
# len() 计算元素个数
# max() 返回最大值
# min() 返回最小值
# math.ceil() 返回指定数值的上舍整数
# open()打开文件并返回文件对象
# pow() 幂运算
# print()打印输出
# range() 生成器
# reversed()反转所有元素
# round()四舍五入求值
# sorted()对可迭代对象进行排序
# str() 转换为字符串
# sum() 求和
# set() 创建集合
# tuple() 将序列转换为元组
# zip()将可迭代对象打包成元组
二、方法
# append() 添加列表元素
# capitalize()首字母转换为大写
# count()字符出现次数
# close() 关闭文件
# decode() 解码字符串
# dict.keys() 获取字典所有的键
# find()字符串首次出现的索引
# f.read() 读取文件内容
# dict.update()更新字典
# dict.items() 获取字典键/值对
# dict.get() 返回指定键的值
# encode() 编码字符串
# list.sort() 排序列表元素
# index() 元素首次出现的索引
# isdigit() 判断字符串是否只由数字组成
# isupper() 是否所有字母都为大写
# isnum() 判断字符串是否由字母和数字组成
# islower() 是否所有字母都为小写
# isdecimal() 检查字符串是否只包含十进制字符
# isalpha() 检测字符串是否为纯字母
# random.shuffle()随机排序
# random.sample()返回无重复随机数列表
# random.choice() 返回一个随机元素
# random.randint() 生成指定范围的随机整数
# random.randrange() 生成指定范围的指定递增基数随机整数
# pop() 删除列表中的元素
# remove()删除列表中的指定元素
# strip()去除空格
# lstrip()去除左侧空格
# rstrip() 去除右侧空格
# readline() 读取单行内容
# root.after() Tkinter中等待一段时间后再执行命令
# str.isnumeric() 验证字符串是否为数字(适用于Unicode)
# split()分割字符串
# ord() 将字符转换为整数
# replace() 字符串替换
# ljust() 左对齐填充
# rjust() 左对齐填充
# readlines() 读取所有行内容
# datetime.datetime.now() 返回指定时区的本地日期时间
# datetime.datetime.today() 获取当前本地日期的date对象
# datetime.utcnow() 返回当前UTC时间的datetime对象
# time.strptime()把时间字符串解析为元组
# time.time()返回当前时间的时间戳
# time.sleep()暂停指定秒数
# time.strftime() 返回指定格式的日期字符串
# time.mktime() 接收时间元组并返回时间戳
# os.getcwd() 获取当前工作目录
# os.listdir() 获取指定路径下的目录和文件列表
# os.makedirs() 递归创建目录
# os.rename() 重命名目录或文件
# os.path.exists() 判断路径是否存在
# upper() 全部转换为大写字母
# lower()全部转换为小写字母
# sys.stdout.write() 标准输出打印
# sys.stdout.flush()刷新输出
# shutil.copy() 复制单个文件到另一文件或目录
# write() 写入文件内容
# winsound.Beep() 打开电脑扬声器
# zfill() 在字符串前面填充0
三、循环语句
# break终止当前循环
# continue 终止本循环进入下一次循环
# with open() as file 以with语句打开文件(数据保存)
四、转义字符
\行尾续行符
\' 单引号
\'' 双引号
\a 响铃
\e 转义
\n 换行
\t 横向制表符
\f 换页
\xyy 十六进制yy代表的字符
\\反斜杠符号
\b 退格
\000 空
\v 纵向制表符
\r 回车
\0yy 八进制yy代表的字符
\other 其他的字符以普通格式输出
python字符处理函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于python字符操作函数、python字符处理函数的信息别忘了在本站进行查找喔 。

    推荐阅读