Я создаю программу в python, которая будет проходить список предложений и находить слова в капители в предложениях. Я использовал функцию findall для получения капиталов на данный момент.Поиск номера индекса для строки слов
Вот пример вывода я получаю в минуту:
line 0: the dog_SUBJ bit_VERB the cat_OBJ
['S'] ['U'] ['B'] ['J'] [] ['V'] ['E'] ['R'] ['B'] [] ['O'] ['B'] ['J']
Однако, я хочу для вывода, чтобы быть полноценными слова, а так:
['SUBJ'] [] ['VERB'] [] ['OBJ']
Я также хочу индексы этих слов:
['SUBJ'] [0]
['VERB'] [1]
['OBJ'] [2]
Возможно ли это? Я видел, как это делалось раньше в терминале, и я думаю, что используется «индекс» или что-то подобное?
Вот мой код ниже (насколько у меня):
import re, sys
f = open('findallEX.txt', 'r')
lines = f.readlines()
ii=0
for l in lines:
sys.stdout.write('line %s: %s' %(ii, l))
ii = ii + 1
results = []
for s in l:
results.append(re.findall('[A-Z]+', s))
Спасибо! Любая помощь будет принята с благодарностью!
Будьте осторожны, так как регулярное выражение будет соответствовать заглавные буквы в правильном существительных/начале предложений и т.д. Для надежности я бы совпадет подчеркивание а также 'm = re.findall ('_ [AZ] +', string)'. Подчеркивание всегда приводит к тому, что так легко удалить с помощью строковой нарезки 'm = [x [1:] для x в m]' – ejrb