Используя Python 3, у меня есть список из примерно 14 500 неизвестных слов, и я хочу сгруппировать их по их функциям.Я использую re.compile
, пытаюсь получить 5 словарей со словами, которые соответствуют каждому критерию, и окончательный список слов, которые не соответствуют ни одному из критериев, но некоторые слова, которые должны были быть сгруппированы, уже проскальзывают.Позвольте мне привести пример:
Вот операторы re.compile
, которые я использую:
import re
wordscaps = re.compile("^([A-Z]*)$")
lettersnumbers = re.compile("^([a-zA-Z][1-9])")
numbersonly=re.compile("^([^a-zA-Z][1-9]+)$")
titlecase = re.compile("^([A-Z][a-z]{1,})$")
longwords=re.compile("^([a-z]{15,})$")
Я делаю это так:
for line in testfile:
if not line.strip():
continue
part=line.strip().split("\t")
if part[1] in UNK_words:
#print(part[1])
unk_word_tags[part[1]]={part[2]:1}
if wordscaps.match(part[1]):
unk2dict[part[1]]=part[2]
elif lettersnumbers.match(part[1]):
unk3dict[part[1]]=part[2]
elif numbersonly.match(part[1]):
unk4dict[part[1]]=part[2]
elif titlecase.match(part[1]):
unk5dict[part[1]]=part[2]
elif longwords.match(part[1]):
unk6dict[part[1]]=part[2]
else:
unkdict[part[1]]=part[2]
но в моем последнем unkdict
я получаю такие слова, как:
'23390','4400','HS2NF5','IS1112C','vA33delta','Cbf5p','Grin2c'
Мне просто интересно, что-то не так с тем, как сформулировано мое заявление re.compile
.