前言:
现在姐妹们对“python删除第一个字符”大致比较关注,我们都需要了解一些“python删除第一个字符”的相关内容。那么小编在网摘上汇集了一些关于“python删除第一个字符””的相关文章,希望咱们能喜欢,看官们快快来学习一下吧!需求场景
这个是在通过OCR或者其他文字识别工具接口,识别到的数据中包含不需要的字符。而我们只想只要识别的数字,当然这个本身识别结果可能也不是对,那就是另外的问题了。而这里我们假设我们识别到的数据,是包含了我们需要的数据的,那么我们怎么通过python去掉那些多余的字符串了。
这就有几个问题。
字符串不固定,普通字符、特殊字符, 比如: ¥ % @ a b c
长度不固定,0、1个、多个
位置不固定, 前、后
"##@1.23abc""#1.23##""###123##"
我们知道python本身有strip方法可以去除特殊字符,但前提是这个特殊字符是可知的,固定的。而对于我说的那些不固定字符的情况就无法很好处理了。所以只能自己想办法处理了,当然我这个也是笨办法,要不是适合所有的场景。
实现思路
这个思路不是一下想出来的,开始是直接把字符串一个遍历,取出判断是不是数字,一直找到不是数字的位置截断,但是这个无法处理开始就是字符的场景,只能去掉后面是字符串的。
后面重新整理实现思路,
判断字符串是否存在数字字符,变量字符串是否是数字,保存索引在列表中。通过数字索引和字符串,判断数字是不是连续的,只取第一个连续的数字。正则处理方式
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 Truedef IsFloat(v): try: newv = float(v) except Exception as e: return False return Truedef hasNum(v): # numstr =["0"] # 判断字符串是否包含数字 for i in range(9): if str(i) in v: return True return Falsedef 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 newvdef findNumV2(str): # 正则处理 # 去除前后的特殊字符,但是如果开始有两段数字,只会得到第一段数字 res= r"\d+[\.]?\d+" result = re.compile(res) strint = result.search(str) return strint.group()# 返回第一个识别的数字的def teststrip():# 测试函数 s = ["!","@","#","$","%","^","&","*","?",",","↓"] 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()实现结果
标签: #python删除第一个字符 #js 去除字符串中某个字符 #python去掉字符串的最后一个字符 #python从第一个字符串删除第二个字符串所有字符的值 #js 去除字符串最后一位