字符串操作 - 如何取到你想要的字符
背景:
在很多场景中, 用设计器取到的字符串中会含有一些其他我们用不到的字符, 或者只想取其中关键的部分 如何通过一些很简单的代码完成一些字符的抓取, 下面我给大家介绍一些经常用到情况, 用很简短的代码取到我们想要的字符
只保留数字
对于取到的字符串含有其他比如中文, 字母, 标点符号的时候, 我们只想要其中的数字的话可以用到以下代码
import re
test = "客户账号:123456789" # 比如我们想在这串字符中只去出数字
result = re.sub("\D", "", test) # (正则表达式中’\D’表示非数字),并用 "" 替换,然后返回的就是只剩下数字的字符串
print(result)
>"123456789" #代码运行后的结果
只保留字母
对于这个操作, 提供了两种方式, 一种是字符串切割, 一种是正则, 代码如下
import re
#字符串切割的方式
test = "客户001的英文名是:james" #比如说这个就是取到的字符串
result = ''.join(re.split(r'[^A-Za-z]', test))
print(result)
>>"james"#代码运行后的结果
#正则的方式
import re
test = "I选择区want域快(〔捷键this ˉ 123"
result =re.sub("[^a-zA-Z]","",test)
print(result)
>>"Iwantthis" #代码运行后的结果
只保留数字和字母
test = "I选择区want域快(〔捷键this ˉwith 123"#比如说这个就是取到的字符串
result =re.sub("[^0-9a-zA-Z]","",test)
print (result)
>>"Iwantthiswith123"#代码运行后的结果
删除所有标点符号
比如我们取下来的字符中有很多标点符号 这些符号删掉之后才是我们想要的东西, 可以使用以下代码
test = 'a,b.c!d\''#比如说这个就是取到的字符串, 我需要把里面所有的标点符号都去掉
punc = '[,.!\']' #把所有你想删除掉的标点符号放在大括号里面, \为转义符
print (re.sub(punc, '', test))
>>"abcd"#代码运行后的结果
删除所有中文
import re
aaa = "xx奥as术dsa大师vcCVDS多阿fsd32@!@$萨德321"# 比如我们想删除这串字符的所有中文
result =re.sub("[\u4e00-\u9fa5]","",aaa)
print (result)
>>xxasdsavcCVDSfsd32@!@$321das# 代码运行后的结果, 所有中文都被删除掉了
取两个关键字中间的字符串
这个情况比如说我们抓一个页码的时候, 抓到了一堆的数据, 包括字母, 汉字, 数字等. 不能够进行笼统的字符串替换操作, 但是我们能够准确的定位到我们想要的字符, 是因为我们想要的字符的前面和后面都有固定的字符比如说第5页
我们只想取出数字5
但是如果我们只取数字的话, 可能会把整个页面的其他数字也取出来, 这时候我们只取两个关键字符串中间的东西就可以了.
myString="Hello 你好 !isearch@"#比如我想在这串字符中取出"isearch"
mySubString=myString[myString.find("!")+1:myString.find("@")]#
print (mySubString)
>>"isearch"
以上是一些最常用到的, 屡试不爽的字符串的操作分享给大家.