Как отделить кириллицу от латиницы и несколько своих условий
в данный момент я отделяю так:
words_a_z = [x for x in words if re.search('[a-z]', x) if
x.startswith('var') != True and x.endswith('vz') != True and x[3].isnumeric() != True and x[
3].isnumeric() != True and x[9] + x[10].isnumeric() != True and x[15] + x[16] + x[
17].isnumeric() != True]
как это можно упростить?, то что знаки 9-10, а также 15-17 можно сгруппировать я в курсе
просто по хорошему у меня шаблон того, что нужно не пропустить такой:
var1vartz02tzvz000vz
после var цифры 1-6
после tz и vz любые цифры
вот со всеми условиями:
words_a_z = [x for x in words if re.search('[a-z]', x) if x.startswith('var') != True and x.endswith('vz') != True and x[3] != [1, 2, 3, 4, 5, 6] and x[4:8] != 'vartz' and x[9:10].isnumeric() != True and x[11:14] != 'tzvz' and x[15:17].isnumeric() != True]
проще это можно записать?
UPDATE:
мне нужно, чтобы в список НЕ попали
var1vartz02tzvz000vz
var1vartz04tzvz004vz
var1vartz04tzvz008vz
var1vartz04tzvz010vz
var1vartz04tzvz012vz
var1vartz04tzvz016vz
var1vartz04tzvz020vz
var могут быть 1-6
в tz и vz могут быть любые цифры в первом случае две цифры, во втором три цифры
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Тут вроде довольно простое же регулярное выражение получается. Просто пишете ваши литералы и перемежаете их нужным количеством \d в тех местах, где возможны произвольные цифры:
import re
re_exclude = re.compile(r'var\dvartz\d\dtzvz\d\d\dvz')
words = '''var1vartz02tzvz000vz
var1vartz04tzvz004vz
var1vartz04tzvz008vz
var1vartz04tzvz010vz
var1vartz04tzvz012vz
var1vartz04tzvz016vz
var1vartz04tzvz020vz
somethingdifferent'''.split()
print([word for word in words if not re_exclude.match(word)])
Вывод:
['somethingdifferent']