python 正则re,字符串,数字的提取,123_re333_0356.jpg

    for file in os.listdir(src_path):  
        img_names = os.listdir(src_path+"/"+file)  
        pattern = re.compile(r'([\d]+)_person([\d]+)_([\d]+)')  #cam1_person062_10459.png,不能跳过字母,正则搜索需要加上要搜索前的字母"_person"
        ## 一个  \d+  只能搜索到cam1 的1,  两个 ([\d]+)_([\d]+) 下划线是字符串中的下划线,  返回 的是062,10459,字符串是, 数字_数字
        ## ([\d]+)_([\d]+)_([\d]+)不对  意思是第一个数字,下划线连接第2个多个数字,错误,应该加上  _person,表示这个_person后面的多个数字062,
        ##再接 下划线,连接的多个数字
        num = len(img_names)
        for index,img_name in enumerate(img_names):
            if num>15:  #大于10张抽取15张左右,自己改动
                interval = (num//15) #多少个数据都抽取10个数据,30//10=3,间隔3张抽取数据,得到10张数据
                if index % interval==0 or index==0: # 例如 0 1 2 3 4 5 6 ,间隔2,就是取2 4 6,同时取得第一个元素0
                    if '.png' not in img_name and '.jpg' not in img_name:
                        continue
                    print("********num",num)
                    # print(pattern.search(img_name).groups())  #('1', '062', '10464')
                    camid, pid,fname = map(int, pattern.search(img_name).groups()) # (1, 62, 10464)

你可能感兴趣的:(python 正则re,字符串,数字的提取,123_re333_0356.jpg)