программа не распознает множественные вхождения слова python (в linux) - PullRequest
0 голосов
/ 23 апреля 2019

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

tH = {}
with open('ex','r') as f:
  for line in f:
    valHold = [w.lower() for w in line.split()]
for x in valHold:
  if x not in tH:
    tH[x] = []
    if x != valHold[-1] and valHold[valHold.index(x) + 1] not in tH[x]:
     tH[x].append(valHold[valHold.index(x) + 1])
print(tH)

Я ожидаю, что результат будет

{'the' : ['sun', 'moon'], 'sun' : ['the'], 'moon' : []}

когда файл 'ex' содержит строку

'the sun the moon'

но вместо этого получается

{'the' : ['sun'], 'sun' : ['the'] 'moon' : []}

1 Ответ

0 голосов
/ 23 апреля 2019

Вместо for x in valHold:, который повторяет каждое слово в valHold, вам нужно будет повторять каждое второе слово, т.е. x = valHold [0] (store valHold [1]), x = valHold [2] (store valHold[3]) и так далее.Вы могли бы сделать это:

for i in range(0, len(valHold), 2):
    x = valHold[i]
    if x not in tH:
        tH[x] = []
    if x != valHold[-1] and valHold[i + 1] not in tH[x]:
        tH[x].append(valHold[i + 1])
...