У меня есть код ниже, который ищет шаблон и присваивает шаблон переменной num
, если шаблон существует.python regex prevent nonetype error
for row1 in cursor1:
try:
m = re.search(r"^[0-9]+(?=\s)", row1[0])
num = m.group()
except Exception as e:
pass
я затем использовать переменную num
в коде ниже:
z1=(item for item in numlist if item[6]==num and harversine.myhaversine(custx,custy,item[2],item[3])<150)
Я хотел бы, чтобы исключить переменную Num и сравнить текст, который соответствует регулярное выражение непосредственно item[6]
как в if item[6]==re.search(r"^[0-9]+(?=\s)",row1[0]).group()
Но это, конечно, даст мне ошибку для строк, у которых нет шаблона. Как достичь того, что я пытаюсь сделать, не получив ошибку nonetype has no attribute group()
? PS: Общий код, который здесь не показан, пересекает строки, создает кортежи и присваивает необходимые значения на основе выполнения инструкции if. Я хочу изменить часть соответствия регулярному выражению, показанную в коде, для лучшей производительности, потому что не все строки используют переменную num
. Я хочу, чтобы регулярное выражение запускалось только для строк, которые используют эту переменную.
Поместите задание 'item [6]' внутри блока 'try' и понимание внутри вашего блока' else' для вышеупомянутой попытки –
"* NoneType * не имеет группы атрибутов" - я уверен, что вы знаете, как проверить на 'None' ... –
@R Nar, к сожалению, я не могу пройти этот маршрут, потому что элемент [6] генерируется внутри понимания, и я использую генераторы, поэтому мне нужно, чтобы он был там, где он находится. – ketar