Поиск подстрок с оператором in из списка слов в Python - PullRequest
2 голосов
/ 04 февраля 2011

Я пытаюсь запустить программу, которая найдет новое значение для A, если в определенном диапазоне индекса содержится период.Проблема в том, что для определения области поиска необходимо разделить слова в списке, таком как этот («A», «B.», «C», «D», «E»), 'F', 'G', 'A', 'B', 'C', 'D', 'E', 'F', 'G').Цель состоит в том, чтобы заставить программу найти первый A, найти меньший список ('A B. C D') для поиска '.'и, если он найдет его, назначить переменную следующему экземпляру A. Пока что весь код работает, за исключением поиска символа '.'с оператором in, потому что он обрабатывает его как 'B.',Это не будет работать в приложении, так как «B» не будет известен.

Есть ли способ найти «.»даже если он появляется рядом с неизвестным текстом?Я пытался использовать регулярные выражения, но он не отвечает хорошо.Это, вероятно, результат ошибки с моей стороны.

words = 'A B. C D E F G A B C D E F G A B C D E F G A B C D E F G'
corpus = words.split()
index_A = corpus.index('A')
while '.' in corpus[index_A : index_A + 3]:
  # This does not seem to be picking up the '.' in 'b.' in isolation.  It will find
  # 'B.' but not '.' from corpus.
  index_A = corpus.index('A', index_A+1)

Ответы [ 3 ]

1 голос
/ 04 февраля 2011

Это выглядит как "." в конце записи.

  words = 'A B. C D E F G A B C D E F G A B C D E F G A B C D E F G'
  corpus = words.split()
   for item in corpus:
    if item.endswith('.'):
     #logic
1 голос
/ 04 февраля 2011

Вы, похоже, здесь разбираете предложения. Рассматривали ли вы использовать Natural Language Toolkit для Python , чтобы сделать это?

1 голос
/ 04 февраля 2011

Здесь нет необходимости в регулярном выражении, но оно будет работать.Не забудьте избежать точки, поскольку это особенное.Затем не забудьте использовать необработанную строку, чтобы избежать вашего побега.:)

Проблема с циклом while в том, что вы ищете элемент, точно равный "."в этом фрагменте, а не элемент в этом фрагменте, который содержит «.».Перейдите к проверке внутри каждого предмета:

while any("." in x for x in corpus[index_A : index_A + 3]):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...