精华内容
下载资源
问答
  • ##Python 字符分割时,只分割最后一个(rsplit的使用) 在python分割时,有时候不是把整个字符分割,而是只分割部分,例如:我要分割文件路径,只想把最后的文件名去除,保留文件夹的路径。例如:/home/username/...

    ## Python 字符分割时,只分割最后一个(rsplit的使用)

    在python分割时,有时候不是把整个字符分割,而是只分割部分,例如:我要分割文件路径,只想把最后的文件名去除,保留文件夹的路径。例如:/home/username/data/text.txt  我想要得到/home/username/data/。如果用split则会把整个分割成一个list,但是可以使用rsplit。

    例如:

    path = /home/username/data/text.txt 
    
    path.split("/")
    
    ["home","username","data","text.txt "]
    
    ## 而使用rsplit:
    
    path.rsplit("/",1)
    
    ["/home/username/data","text.txt "]

    rsplit("/",1) 中的1,表示从后面分割1个出来,如果是2,那么就是分割两部分出来

    展开全文
  • OpenCV—python 字符分割

    2020-07-15 10:07:46
    本博客主要探讨基于传统方法的验证码识别,更多的是做粘连扭曲的验证码识别的分割,其实在验证码识别这一块,深度学习做的已经非常好了,识别效率与速度都是不错的。【验证码识别】 连通域:...

    本博客主要探讨基于传统方法的验证码识别,更多的是做粘连扭曲的验证码识别的各种分割技术,其实在验证码识别这一块,深度学习做的已经非常好了,识别效率与速度都是不错的。【验证码识别】,我这里只是做一些技术探讨,关于【 基于投影的字符分割】 请查看。

    一、基于连通域的字符分割

    import queue
    from PIL import Image
    
    def cfs(img):
        """传入二值化后的图片进行连通域分割"""
        pixdata = img.load()
        w, h = img.size
        visited = set()
        q = queue.Queue()
        offset = [(-1, -1), (0, -1), (1, -1), (-1, 0), (1, 0), (-1, 1), (0, 1), (1, 1)]
        cuts = []
        for x in range(w):
            for y in range(h):
                x_axis = []
                if pixdata[x, y] == 0 and (x, y) not in visited:
                    q.put((x, y))
                    visited.add((x, y))
                while not q.empty():
                    x_p, y_p = q.get()
                    for x_offset, y_offset in offset:
                        x_c, y_c = x_p + x_offset, y_p + y_offset
                        if (x_c, y_c) in visited:
                            continue
                        visited.add((x_c, y_c))
                        try:
                            if pixdata[x_c, y_c] == 0:
                                q.put((x_c, y_c))
                                x_axis.append(x_c)
                        except:
                            pass
                if x_axis:
                    min_x, max_x = min(x_axis), max(x_axis)
                    if max_x - min_x > 3:
                        # 宽度小于3的认为是噪点,根据需要修改
                        cuts.append((min_x, max_x + 1))
        return cuts
    
    
    
    def binarizing(img, threshold):
        """传入image对象进行灰度、二值处理"""
        img = img.convert("L")  # 转灰度
        pixdata = img.load()
        w, h = img.size
        # 遍历所有像素,大于阈值的为黑色
        for y in range(h):
            for x in range(w):
                if pixdata[x, y] < threshold:
                    pixdata[x, y] = 0
                else:
                    pixdata[x, y] = 255
        return img
    
    img = Image.open('C98Q.png')
    img = binarizing(img, 200)
    cuts = cfs(img)
    w, h = img.size
    for i, item in enumerate(cuts):
        box = (item[0], 0, item[1], h)
        img.crop(box).save("./" + str(i+10) + ".png")
    

    递归法
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    import numpy as np
    import cv2
    from PIL import Image
    
    
    def getPoint(x,y,data,subdata=None):
        a=[0,-1,0,1,0,-2,0,2,0,-3,0,3,0,-4,0,4,0,-5,0,5]
        b=[1,0,-1,0,2,0,-2,0,3,0,-3,0,4,0,-4,0,5,0,-5,0]
        width,height=data.shape
        if subdata is None:
            subdata=[]
        if x>5 and y<height-5 and y>5 and x<width-5:
            for i in range(20):
                if data[x+a[i]][y+b[i]]==1:
                    subdata.append((x+a[i],y+b[i]))
                    data[x+a[i]][y+b[i]]=2
                    getPoint(x+a[i],y+b[i],data,subdata)
        subdata.append((x,y))
     
    def getcell(data):
        list1=[]
        index=0
        flag=True
        for y in range(data.shape[1]):
            for x in range(data.shape[0]):
                if data[x][y]==1:
                    if list1:
                        for i in range(len(list1)):
                            if (x,y) in list1[i]:
                                flag=False
                    if not flag:
                        continue
                    list1.append([])
                    getPoint(x,y,data,list1[index])#调用流水算法
                    index+=1
                else :
                    continue
        
        for index in range(len(list1)):
            l=list1[index][0][0]
            t=list1[index][0][1]
            r=list1[index][0][0]
            b=list1[index][0][1]
            for i in list1[index]:
                x=i[0]
                y=i[1]
                l=min(l,x)
                t=min(t,y)
                r=max(r,x)
                b=max(b,y)
            w=r-l+1
            h=b-t+1
            if (w*h <8):#去除小色块
                continue
            img0=np.zeros([w,h])#创建全0矩阵
            for x,y in list1[index]:
                img0[x-l][y-t]=1
            img0[img0<1]=255
            img1=Image.fromarray(img0)
            img1=img1.convert('RGB')
            img1.save('img2/'+str(index)+'.png')
    if __name__=="__main__":
        filename='captcha1.png'
        data=cv2.imread(filename,2) 
        allimg=getcell(data)
    

    连通域:https://blog.csdn.net/fox64194167/article/details/80557242
    连通域:https://blog.csdn.net/qq_32590631/article/details/78806388
    泛红填充:http://www.voidcn.com/article/p-vilyctpt-mr.html
    python生成中文验证码:https://www.cnblogs.com/whu-zeng/p/4855480.html
    Python生成验证码:https://blog.csdn.net/Dick633/article/details/83057808

    区域填充之扫描线种子法的Python实现:https://blog.csdn.net/u013859301/article/details/53292523

    基于HSV颜色的ROI区域提取 https://blog.csdn.net/xull88619814/article/details/82050800

    文字切割垂直投影算法
    https://blog.csdn.net/jylonger/article/details/88043031

    展开全文
  • python字符分割,提供的split方法,可以把字符串分割成一个列表。不过它是只能分割单一字符,如是有多个字符,需要用re库里的split方法,使用如下: import re s1='hallo*xyz%yu!zz,123?456 abc.88' s2="hello ...

    python字符串分割,提供的split方法,可以把字符串分割成一个列表。不过它是只能分割单一字符,如是有多个字符,需要用re库里的split方法,使用如下:

    import re

    s1='hallo*xyz%yu!zz,123?456 abc.88'
    s2="hello baby,i love you!886"
    print(s2.split(' '))#这是分割s2里的空格,不过因为s2里还有,!等字符,就没法全部分割开。
    print(re.split('[,|!|.|?| |%|*]',s1))#这是re库里的split方法使用,

    执行结果:

    ['hello', 'baby,i', 'love', 'you!886']
    ['hallo', 'xyz', 'yu', 'zz', '123', '456', 'abc', '88']

    re库里的split方法,第一个参数是要分割的字符列表样式,按照如下格式:[每个要分割的字符|每个要分割的字符|...]

    展开全文
  • python字符分割

    千次阅读 2017-08-05 18:01:49
    常用strip()去除字符串string首尾空格,在用split(‘XX’)将字符串string分成字符串列表。 e.g: >>> s1 = ' 123||456ab||789|| kd290b ' * 2 >>> print s1 123||456ab||789|| kd290b 123||456ab||789|| kd290b >...

            常用strip()去除字符串string首尾空格,在用split(‘XX’)将字符串string分成字符串列表。

    e.g:

    >>> s1 = '   123||456ab||789||  kd290b  ' * 2
    >>> print s1
       123||456ab||789||  kd290b     123||456ab||789||  kd290b  
    >>> def separate_string(string,spl = '||'):
    	string = string.strip()
    	slst = string.split(spl)
    	for s in slst:
    		s = s.strip()
    		if s.isalnum():
    			print s
    		else:
    			print 'String illegal!'
    
    			
    >>> separate_string(s1)
    123
    456ab
    789
    String illegal!
    456ab
    789
    kd290b
    >>> stemp = s1.strip()
    >>> print stemp
    123||456ab||789||  kd290b     123||456ab||789||  kd290b
    >>> stemplist = stemp.split('||')
    >>> print stemplist
    ['123', '456ab', '789', '  kd290b     123', '456ab', '789', '  kd290b']
    >>> 
    >>> s2 = '    1sd*q564 *2349d*   jh588  *   we890 *3dfghl  '
    >>> separate_string(s2,'*')
    1sd
    q564
    2349d
    jh588
    we890
    3dfghl

            不用split()函数,用c++习惯去除空格分割字符串:

    >>> s3 = '  uidd    3fg 23fd    rflkd  6ykpld     9dfghkotr    '
    >>> def strip_space(string):
    	string = string.strip()
    	pos_start = string.find(" ")
    	print string[:pos_start]  #the first ftring
    	pos_end = pos_start
    	while pos_end <= len(string) and pos_end != -1:
    		while " " == string[pos_start]:
    			pos_start = pos_start + 1
    		pos_end = string.find(" ",pos_start)
    		if -1 != pos_end:
    			print string[pos_start:pos_end]
    		else:
    			print string[pos_start:]
    		pos_start = pos_end
    
    		
    >>> strip_space(s3)
    uidd
    3fg
    23fd
    rflkd
    6ykpld
    9dfghkotr
    >>> 


    展开全文
  • python分割字符

    千次阅读 2021-01-18 14:39:31
    使用python完成字符串的分割
  • python字符分割与合并

    千次阅读 2018-07-29 11:55:06
    python字符分割与合并 2018-7-29 字符串分割: split_str=str.split() split2_str=str.split(',') ##表示以不同的字符串为分割线,对字符串拆分,得到列表 字符串合并: #将split后的字符串合并为一个...
  • Python字符分割方法总结

    千次阅读 2018-05-19 16:21:32
    Python字符分割的常用方法是直接调用字符串的str.split方法,但是其只能指定一种分隔符,如果想指定多个分隔符拆分字符串需要用到re.split方法(正则表达式的split方法)。 str.split 字符串的split方法函数...
  • python 分割字符

    千次阅读 2017-09-01 17:54:09
    python 分割字符
  • Python字符分割函数

    千次阅读 2014-06-25 21:44:13
    Python学习之字符分割 设计一个函数把一个含有空格的字符分割成几个字符串 def splice1(temp):  temp=temp.strip()  while temp.find(' ')!=-1:  temp1=temp[:temp.find(' ')]  print temp1....
  • OpenCV+Python识别车牌和字符分割

    万次阅读 多人点赞 2019-01-30 17:37:54
    本篇文章主要基于python语言和OpenCV库(cv2)进行车牌区域识别和字符分割,开篇之前针对在python中安装opencv的环境这里不做介绍,可以自行安装配置! 车牌号检测需要大致分为四个部分: 1.车辆图像获取 2.车牌...
  • python字符分割问题

    2016-09-28 06:37:07
    形如abcde或者12345的字符串,如何分割成1,2,3,4,5
  • Date: 2018.6.9 文章目录1、 参考2、分割字符串的三种方法2.1 str.split()2.2 re.split()2.3 str.partition() 1、 参考 ...2、分割字符串的三种方法...利用字符串函数split分割分割后返回的是分割部分的字符列表,但是
  • print int("42"), str(42) # convert from/to stringprint int("42") + 1 # force additionpython中字符串自带的split方法一次只能使用一个字符对字符串进行分割,但是python的正则模块则可以实现多个字符分割import...
  • utm_medium=referralPython 字符分割的方法在平时工作的时候,发现对于字符分割的方法用的比较多,下面对分割字符串方法进行总结一下:第一种:split()函数split()函数应该说是分割字符串使用最多的函数用法:...
  • Python字符分割问题

    2016-09-28 13:16:06
    形如[['022302120222'], ['222223111032'], ['301322130302']这样的list如何转换成[['0', '2','2','3','0',...],['2','2','2','2'....],[...]]
  • 文章目录不保留分隔符保留分割符将分隔符放在句子后面 不保留分隔符 "[ ]"在里面填写分隔符,不会保留分隔符。 import re sentence = "你在北京 我,你是谁?在干嘛." items = re.split("[.。!!??;;,,\s+]", ...
  • OpenCV+Python车牌字符分割和识别入门

    万次阅读 多人点赞 2017-11-28 00:33:26
    最近做一个车牌识别项目,入门级别的,十分简单。 车牌识别总体分成两个大的步骤...在这种情况下,很难区分谁是背景,谁是字符,所以需要对图像进行一些处理,把每个RGB定义的像素点都转化成一个bit位(即0-1代码),具
  • Python根据多个字符分割字符串 import re a = ‘a,s q-a’ q = re.split(’[,/ -]’, a) # []中每个字符都是分割字符
  • Python字符分割命令split

    千次阅读 2017-01-10 13:03:12
    对line进行分割,默认以空格分割分割全部空格。 line.split('\t',1) 对line进行分割,以制表符分割,只分割第一个。 line.rsplit('\t',4) 对line进行分割,以制表符分割,从line的结尾往前...
  • Python分割字符

    2017-11-07 09:58:57
    python常用字符串操作
  • Opencv—python 基于投影的字符分割

    千次阅读 2018-10-07 09:47:22
    字符分割有很多方法,根据自己的需要来分析,那种方法更加适合自己。大致适而言有两种方法:投影分割法和连通域分割法。 投影法的原理:利用二值化图片的像素的分布直方图进行分析,从而找出相邻字符的分界点进行...
  • Python实现PDF字符分割

    千次阅读 2017-07-07 14:20:59
    https://github.com/tianzhi0549/CTPN ... 这边我选个一个PDF论文中一段,进行分割和翻译。如下图。分割效果如下:调试了几个参数,发现不太能够一个单词一个单词这样分割,将上图直接输入给CRNN是无法识别出其中的单
  • 用re包,多个字符全部放入[ ]即可,比如要把1+2-3按照+ - 分隔。就re.split("[+-]") import re s = "1+2-3" a=re.split("[+-]",s) print(a)
  • 试将字符串'a b c'分割为['a','b','c'],注意字符串'a b c'的b和c之间有**三个空格**,a和b之间只有一个空格。 方法1 s = 'a b c' s = s.split(' ') print(list(filter(lambda x:x!='',s))) 方法2 s= s.replace(' ...
  • python字符串以某个字符分割

    千次阅读 2020-11-16 19:12:51
    一整串字符串,以某个固定字符分割成多个部分 代码 my_str = '-0.6856600698311117,0.05632624773119734,0.5632555325191156,1.8018419365295855,-0.9861161881778492,-1.9320369212412984' strlist = my_str....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,883
精华内容 39,553
关键字:

python字符分割

python 订阅