python字符串如何去掉英文字母以外的字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python字符串如何去掉英文字母以外的字符相关的知识,希望对你有一定的参考价值。
可以利用正则表达式来去除
既然说到了字符串的操作,那么就目前而言是没有别的方法会比正则表达式更加方便的:
正则表达式中代表非字母的写法如下:
[^a-zA-Z]
#code:
#out:
拓展内容
其实除了正则表达式来截取外,python中String也提供了方法来判断字符是否为字母字符:
isalpha()方法 判断当前索引的字符是否为字母返回布尔类型
#code:
#out:
其实上述利用isalpha()的写法还可以简写一点,可以利用python可以把表达式当成参数的写法来:
#code:
表达式返回的为一个字符列表,这里使用join方法把空字符加入到字符列表中组成了一个新的字符串返回。
#out:
参考技术A Python易混淆知识系列:Pandas字符串方法和字符串内建函数,使用Python的一个优势就是字符串处理起来比较容易。Python的初学者在学习字符串内建函数的时候往往会很困惑:字符串的内建函数是对单个字符串对象处理,如果要对成千上万个字符串对象处理该怎么办?
不少已经使用Python工作很长时间的同学,即使已经学会使用Pandas对象的.apply()方法来处理字符串,依然会时常忘记:其实Pandas已经自带功能强大的向量化字符串操作。
即使知道Pandas字符串方法的同学,使用的时候也经常与字符串内建函数混淆。
而熟练使用Pandas字符串方法的同学往往会觉得,其方法的代码简洁性与运行效率都远高于其他的写法。真相到底如何?Pandas字符串方法和字符串内建函数有什么不同?运算效率真的像传闻那么高吗?
今天我们就好好捋一下这块Python易混淆的知识点。
1. 快速入门向量化字符串操作
初学Python字符串内建函数的同学肯定知道有个叫.lower()的方法可以将字符串中的大写英文字母转化为小写,比如将字符串对象’ABCD’转化为小写:
如果字符型的Series对象中的字符串要转化为小写呢?比如:
点击添加图片描述(最多60个字)
编辑
此时,我们就可以使用Series的str方法中的.lower()来处理:
点击添加图片描述(最多60个字)
编辑
同理,如果要将Series对象中的所有的大写字母变成小写,可以使用.str.upper()。
看到这里,相信很多没有使用过Pandas字符串方法的同学会惊奇地发现,这跟字符串对象的内建函数差不多呀?只不过多了一个通过.str()方法调用函数的过程。
确实,大多数Pandas的字符串方法借鉴了Python字符串内建函数的内容,。 参考技术B 字符串操作是日常编码和Web开发中非常重要的任务;例如:HTTP查询中的大多数请求和响应都是字符串形式,有时我们需要删除一些无用的数据。下面本篇文章就来给大家介绍一些Python方法来将指定字符串中除字母和数字之外的所有字符都删除,希望对大家有所帮助。
方法一:使用re.sub()函数
在Python中正则表达式的功能是很强大的,而re.sub()函数就是Python中的正则替换字符串。re.sub()函数可以使用正则匹配要替换的字符串,进而将匹配的字符串替换成别的字符串。
语法:
re.sub(pattern , repl , string , count = 0 , flags = 0)
此函数中的“sub”代表子字符串(SubString),在给定的字符串(第3个参数)中搜索特定的正则表达式模式(第1个参数),找到后用repl(第2个参数)中的替换子字符串模式进行替换,计数检查并保持出现这种情况的次数。
代码示例:
在这里插入图片描述
输出:
在这里插入图片描述
方法二:使用isalpha()+isnumeric()+join()方法
isalpha()方法是Python的一种用于字符串处理的内置方法,可以检查字符串是否只由字母组成。如果字符串中的所有字符都是字母,则返回“True”,否则返回“False”。
isnumeric()方法是Python的一种用于字符串处理的内置方法,可以检查字符串是否只由数字组成。如果字符串中的所有字符都是数字字符,则返回“True”,否则返回“False”。
join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串 参考技术C 字符串操作是日常编码和Web开发中非常重要的任务;例如:HTTP查询中的大多数请求和响应都是字符串形式,有时我们需要删除一些无用的数据。下面本篇文章就来给大家介绍一些Python方法来将指定字符串中除字母和数字之外的所有字符都删除,希望对大家有所帮助。
方法一:使用re.sub()函数
在Python中正则表达式的功能是很强大的,而re.sub()函数就是Python中的正则替换字符串。re.sub()函数可以使用正则匹配要替换的字符串,进而将匹配的字符串替换成别的字符串。
语法:
re.sub(pattern , repl , string , count = 0 , flags = 0)
此函数中的“sub”代表子字符串(SubString),在给定的字符串(第3个参数)中搜索特定的正则表达式模式(第1个参数),找到后用repl(第2个参数)中的替换子字符串模式进行替换,计数检查并保持出现这种情况的次数。 参考技术D
去掉字符串中字母以外的字符,在Python编程语言中有多种实现方式。
Python中的str类型,有一个isalpha()方法,判断字符是否是英文字符。可以使用循环逐个字符判断是否是英文字符,如果是英文字符则加入新的字符串。
oldS = 'as30wejl2@2]sjls'newS = ''
for s in oldS:
if s.isalpha():
newS += s
print newS
以上代码可以使用表理解浓缩成一行,表理解返回的结果是一个list,因此需要用空字符串''连接。
print ''.join([x for x in oldS if x.isalpha()])上面的实现方式可以完成任务,但仍然不够凝练。最佳的实现方式是使用正则表达式匹配非英文字母,将其替换成空字符,这可以使用re包的sub()函数实现。
import reprint re.sub('[^a-zA-Z]','',oldS)
上述正则表达式[^a-zA-Z],就是用于匹配非英文字符。
Oracle如何使用将一个字符里的字母去掉?
例如 张三AB,处理后得到的结果是张三,但是字符里的字母是不固定的,及有可能是张三CH,也有可能是张三PPPP等等,replace函数每次只能替换一个字母,太慢
Oracle使用函数将一个字符里的字母去掉:select case when regexp_like(字段名,\'.([a-z]+|[A-Z])\') then \'包含字母\' else \'不包含字母\' end
from 表名字
正则表达式函数:regexp_like
关键的参数是第二个:\'.([a-z]+|[A-Z])\'其中.表示匹配任何单字符,换行符除外
[a-z]是小写字母|或[A-Z]大写字母 参考技术A 有没有可能是张A三B?如果是这样的话,那么你还真的只能一个一个替换。如果都是类似 张三AB这种,那么你可以用正则里面有一个REGEXP_INSTR,你可以从第一位截取,用前面的函数定义找到第一个字母位置,然后长度减1,再用SUBSTR截取,就ok了。
以上是关于python字符串如何去掉英文字母以外的字符的主要内容,如果未能解决你的问题,请参考以下文章
python字符串的操作(去掉空格strip(),切片,查找,连接join(),分割split(),转换首字母大写, 转换字母大小写...)