Количество предшествующих слов перед фразой в строке - PullRequest
0 голосов
/ 05 сентября 2018

При условии, что у меня есть список фраз:

list = ['new york', 'school', 'new']

и строка

text = 'i am going to a school in new york and therefore i have to buy a new uniform to go to new york'

Я хотел бы найти количество слов, предшествующих каждой фразе (только для первого появления), т.е. вывод должен быть:

new york = 7
school = 5
new = 7

Есть идеи, как мне этого добиться?

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Использование count и index:

lst = ['new york', 'school', 'new']
text = 'i am going to a school in new york and therefore i have to buy a new uniform to go to new york'

for x in lst:
    print(f"{x} = {text.count(' ', 0, text.index(x))}")

# new york = 7
# school = 5                                                   
# new = 7

count считает пробелы в text от начала до тех пор, пока вы не встретите первое появление фразы, которое совпадает с количеством слов, предшествующих этой фразе.

0 голосов
/ 05 сентября 2018
lst = ['new york', 'school', 'new']
text = 'i am going to a school in new york and therefore i have to buy a new uniform to go to new york'

Это даст вам строку, счетчик которой вы ищете, и счетчик строки

for x in lst:
    print(x +": "+str(len(text[0:text.index(x)].split(' ')) -1))
0 голосов
/ 05 сентября 2018

Наивный подход, без каких-либо соображений производительности или НЛП:

lst = ['new york', 'school', 'new']  # do not use 'list' as a name
text = 'i am going to a school in new york and therefore i have to buy a new uniform to go to new york'

{p: len(text[:text.find(p)].strip().split()) for p in lst}
# {'new york': 7, 'school': 5, 'new': 7}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...