re.compile.match()提供AttributeError:'NoneType'对象没有属性'groups'

时间:2019-10-11 06:33:06

标签: python-3.x

CODE

>>lp_name='./problems/car_license_plate.jpg'
>>text_description=str(get_text_description(lp_name))
>>text_description
[output]   'АЕВ 329\nICT-ISLAMABAD\'

Text_description是Google视觉API的响应

经过一些字符串操作后,将从整个字符串中提取注册号

>>License_plate=extract_registration_ID(text_description)
>>License_plate
[output]   ['АЕВ329']

现在我必须分隔使用re.compile.match()的前缀和数字

>>split_strings_numbers=splitString(License_plate)

splitString()从这里开始。

>>def splitString(lp_without_district):
      import re 
      splitted=[]
      for i in range(len(lp_without_district)):
          if lp_without_district[i][0].isdigit()==False and lp_without_district[i][-1].isdigit()==True:

              temp = re.compile("([a-zA-Z]+)([0-9]+)")
              res = temp.match(lp_without_district[i]).groups() 
          elif lp_without_district[i][0].isdigit()==True and lp_without_district[i][-1].isdigit()==False:
              temp = re.compile("([0-9]+)([a-zA-Z]+)")
              res = temp.match(lp_without_district[i]).groups()
          else:
              res=[lp_without_district[i]]

          for i in range(len(res)):
              splitted.append(res[i])
      return splitted

但我收到此错误消息


AttributeError跟踪(最近一次通话)  在      30打印('注册号为空')      31#分割字符串和数字 ---> 32 split_strings_numbers = splitString(lp_without_district)      33      34打印(split_strings_numbers)

splitString中的

(lp_without_district)     140 #print(lp_without_district [i] [0],'--------',lp_without_district [i] [-1])     141 temp = re.compile(“([[a-zA-Z] +)([0-9] +)”) -> 142 res = temp.match(lp_without_district [i])。groups()     143 elif lp_without_district [i] [0] .isdigit()==真和lp_without_district [i] [-1] .isdigit()== False:     144 #print(lp_without_district [i] [0],'--------',lp_without_district [i] [-1])

AttributeError:'NoneType'对象没有属性'groups'

当我手动传递License_plate = ['АЕВ329']时,即我使用键盘初始化字符串并将其传递给函数splitString(),它工作得很好,给出了输出。

[output] ['AEB', '329']

但是从google vision API中检索到的字符串会给出此错误消息。

我已经检查了文本的数据类型,它是字符串。字符串的长度也相同,为6。

对于Google视觉检索的数据

>>len(License_plate[0])
[output] 6

>>type(License_plate[0])
[output] str

用于手动输入

>>License_plate=['АЕВ329']
>>len(License_plate[0])
[output] 6
>>type(License_plate[0])
[output] str

两者都一样,但是手动输入工作正常,并且Google视觉检索的文本出现问题。请有人帮助。我会很感激

0 个答案:

没有答案