百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

如何通过python去除数字字符串中的前后字符

off999 2024-11-01 12:52 32 浏览 0 评论

需求场景

这个是在通过OCR或者其他文字识别工具接口,识别到的数据中包含不需要的字符。而我们只想只要识别的数字,当然这个本身识别结果可能也不是对,那就是另外的问题了。而这里我们假设我们识别到的数据,是包含了我们需要的数据的,那么我们怎么通过python去掉那些多余的字符串了。

这就有几个问题。

字符串不固定,普通字符、特殊字符, 比如: ¥ % @ a b c

长度不固定,0、1个、多个

位置不固定, 前、后

"##@1.23abc"
"#1.23##"
"###123##"

我们知道python本身有strip方法可以去除特殊字符,但前提是这个特殊字符是可知的,固定的。而对于我说的那些不固定字符的情况就无法很好处理了。所以只能自己想办法处理了,当然我这个也是笨办法,要不是适合所有的场景。

实现思路

这个思路不是一下想出来的,开始是直接把字符串一个遍历,取出判断是不是数字,一直找到不是数字的位置截断,但是这个无法处理开始就是字符的场景,只能去掉后面是字符串的。

后面重新整理实现思路,

  1. 判断字符串是否存在数字字符,
  2. 变量字符串是否是数字,保存索引在列表中。
  3. 通过数字索引和字符串,判断数字是不是连续的,只取第一个连续的数字。

正则处理方式

def findNumV2(str):
    # 去除前后的特殊字符,但是如果开始有两段数字,只会得到第一段数字
    res= r"\d+[\.]?\d+"
    result = re.compile(res)
    strint = result.search(str)
    return strint.group()#  返回第一个识别的数字的

实现方法

def Isint(v):
    try:
        newv = int(v)
    except Exception as e:
        return False
    return True

def IsFloat(v):
    try:
        newv = float(v)
    except Exception as e:
        return False
    return True

def hasNum(v):
    # numstr =["0"]
    # 判断字符串是否包含数字
    for i in range(9):
        if str(i) in v:
            return True
    return False

def valueStripv2(v):
    # 去除前后的特殊字符,但是如果开始有两段数字,只会得到第一段数字
    l = len(v)
    if not hasNum(v):
        return ""
    numlist = []
    if Isint(v):
        return v
    elif IsFloat(v):
        return v
    else:
        return findNumV2(v)

def findNum(indexlist,v):
    # 把字符串中第一段数字找出来
    for i in range(1,len(indexlist)):
        newv = v[indexlist[0]:indexlist[i]]
        if "." in v:
            if IsFloat(newv):
                if indexlist[i] == indexlist[-1]:
                    # 数字索引是连续的,取到索引列表的当前,但是字符串索引要+1 因为indexlist 的值存的是字符串里面的索引值
                    newv = v[indexlist[0]:indexlist[i] + 1]
                    return newv
                else:
                    continue
            else:
                # 数字索引不是连续的,取到索引列表的前一个,但是字符串索引要+1 因为indexlist 的值存的是字符串里面的索引值
                newv = v[indexlist[0]:indexlist[i - 1] + 1]
                return newv
        else:
             if Isint(newv):
                 if indexlist[i] == indexlist[-1]:
                     # 到最后了
                     # 数字索引是连续的,取到索引列表的当前,但是字符串索引要+1 因为indexlist 的值存的是字符串里面的索引值
                     newv = v[indexlist[0]:indexlist[i] + 1]
                     return newv
                 else:
                     continue
             else:
                 # 数字索引不是连续的,取到索引列表的前一个,但是字符串索引要+1 因为indexlist 的值存的是字符串里面的索引值
                 newv = v[indexlist[0]:indexlist[i-1]+1]
                 return newv

def findNumV2(str):
    # 正则处理 
    # 去除前后的特殊字符,但是如果开始有两段数字,只会得到第一段数字
    res= r"\d+[\.]?\d+"
    result = re.compile(res)
    strint = result.search(str)
    return strint.group()#  返回第一个识别的数字的
def teststrip():
# 测试函数
    s = ["!","@","#","#34;,"%","^","&","*","?",",","↓"]
    for i in s:
        s1 = i+"123"+i*3
        s2 = i*3+"12.3"+i
        s3 = "12.3"+i*3
        s4 = i*3+"12.3"
        print(s1,">>>>>",valueStripv2(s1))
        print(s2,">>>>>",valueStripv2(s2))
        print(s3,">>>>>",valueStripv2(s3))
        print(s4,">>>>>",valueStripv2(s4))
if __name__ == '__main__':
  teststrip()

实现结果


相关推荐

央视cctv5体育直播(央视cctv5体育直播在线观看免费)

现在全国每家都有机顶盒,在机顶盒上就可以看CCTV所有频道。也可以用手机浏览器搜索CCTV5体育频道。还有就是可以手机上下载安装央视影音APP,央视频APP都可以看。中央电视台体育频道(频道呼号:CC...

激活工具永久激活win7(win7激活工具2021)
  • 激活工具永久激活win7(win7激活工具2021)
  • 激活工具永久激活win7(win7激活工具2021)
  • 激活工具永久激活win7(win7激活工具2021)
  • 激活工具永久激活win7(win7激活工具2021)
直播平台app下载大全(直播平台app下载大全免费)
直播平台app下载大全(直播平台app下载大全免费)

专门观看淘宝直播的APP是点淘,这款APP是这段时间才出的,我下载了一个,但是我下载这款APP不是为了买东西当时也是看广告连接才点进去的,它这上面是可以赚一些零花钱,我下载之后他给了我七块钱,然后现在每天弄不弄也能弄个一块钱左右。但是里边的...

2026-01-19 01:15 off999

网络播放器app(网络播放器怎么连接电视机)

牛片APP一站式影视智能功能,几乎可以满足影视人工作中的所有需求。包含的功能有:文字转语音、真人配音、自动加字幕、一键去水印、提词器、拍片估价、堪景神器、影视课程、发布影视相关需求、接单赚钱....等...

audition(audition属于什么软件)

Audition是一款由Adobe开发的音频编辑和混音软件,具有以下主要功能:1.音频录制和编辑:可以录制不同类型的音频,包括对话、音乐、戏剧和环境声音等,还可以使用多种音频效果处理工具对录制...

office2020官方下载免费完整版

Microsoft365和Office2020的区别有以下几点:功能不同。Office2020包含Word、Excel、PowerPoint等组件,功能比较全面;而Microsoft365包...

微信管理软件(微信管理)

微信管理,可以一键将消息发送到多个群,不限制群数量和次数选择好群组发送消息即可。“里德助手”多消息群发,可以设置多条消息发送,包括图文、小程序,公众号,文章等都是可以的。亲密群发,逢年过节,总是要给...

优酷视频下载安装2025最新版本
优酷视频下载安装2025最新版本

2022爱奇艺腾讯优酷会员,要根据具体的需求来选择。喜欢青春偶像剧类型的可以选择爱奇艺视频;喜欢一些自制综艺和自制剧的优酷视频会员是不错的选择;腾讯视频定位就是主打大IP剧和一些热门综艺的转播,一般卫视播出的都会出现在腾讯视频有这方面需...

2026-01-19 00:03 off999

火辣辣的小说网(火辣辣的小说网名)

《司夜爵姜笙》。内容简介:今天是她的婚礼,可新郎司夜爵没有出现。姜笙站在台上,耳边充斥着满座亲朋的窃窃私语。想哭吗?想。可她要真哭出来,场面就更难看了。姜笙固执的站在那儿看着教堂大门。可看着天色从亮到...

小程序如何转换成word文档(小程序怎么转文档格式)

小程序文件一般是以小程序的代码形式存在的,不能直接转换成文档。如果需要将小程序中的文本内容转换为文档,可以尝试手动复制粘贴到文档编辑器中,或者使用相关的工具或软件进行批量转换。但是,需要注意版权问题和...

百度云网盘资源链接(百度云网盘资源链接群组小众圈子)

如果您想从网盘中提取网址,可以按照以下步骤操作:1.打开您的网盘,找到您想提取网址的文件或文件夹。2.右键单击该文件或文件夹,选择“复制链接”或“获取链接”等选项。3.将复制的链接粘贴到浏览器地...

pr软件下载手机版(pr软件官方下载)
pr软件下载手机版(pr软件官方下载)

pr2019的软件安装较为简单,点击setup.exe应用程序之后,在弹出的界面设置安装选项:1、语言2、安装路径。这里的语言默认选择中文。默认的安装路径在c盘,推荐安装的非系统盘的盘符中,比如D盘。单击文件后进行路径的指定,指定完成后默认...

2026-01-18 23:03 off999

音乐剪辑软件免费版(音乐剪辑用什么免费软件)

CoolEditPro2.0或2.1CoolEditPro是一款既能支持声音录制,也能支持声音编辑与合成的多功能软件,利用这样的软件,你可以将自己满意的歌声或者喜欢的歌曲录制下来。该软件支持从多种声音...

wifi密码查看密码器下载(wifi密码查看密码器下载官方)
wifi密码查看密码器下载(wifi密码查看密码器下载官方)

在手机的应用商店里,然后找到万能钥匙,点击下载。下载完成后直接安装在桌面上就可以了。在你电话应用里面下载万能钥匙,就自动会出现在桌面上了感觉WiFi共享精灵最好用,WiFi共享精灵是一款电脑搭建免费wifi热点必备软件,电脑安装,一键...

2026-01-18 22:43 off999

畅读小说免费版(畅读小说在线)

1.如果你购买京东plus会员,京东阅读里的畅读书籍就可以免费看了。2.也可以下载得到?这个软件,也有比较多的书籍可以免费看。番茄的畅读卡是指在番茄读书app里设置的一种功能,用于提供会员用户更加畅快...

取消回复欢迎 发表评论: