#python #curses
#питон #проклятия
Вопрос:
Я нахожу, что проклятия трудно отлаживать, потому что я не могу перенаправить отображение во второе окно терминала, чтобы я мог выполнять команды по одной за раз в оболочке Python, чтобы увидеть, как они работают.
Я протестировал это, и это работает через epub2txt и линии spacy. Синтаксис цикла также работает. Окно проклятий запускается, но оно застряло. Я почти уверен, что это в строке «stdscr.addstr ()», потому что я не вижу строку, добавленную на главный экран.
# This is a Python program which takes the name of an EPUB from the command line, extracts the plaintext content from the EPUB, then segments it with Spacy, then displays each sentence one at a time on-screen. # The controls are "n" for next sentence, "b" for last sentence, and "q" to quit the application. import sys import spacy import epub2txt import curses def main(stdscr): stdscr.clear() # Get the name of the EPUB textname = sys.argv[1] # Get the plaintext out of the EPUB text = epub2txt.epub2txt(textname) # Segment the text with Spacy. nlp = spacy.load('en_core_web_sm') doc = nlp(text) # loop through the sentences with index: for i, sentence in enumerate(doc.sents): stdscr.addstr(str(i) ": " str(sentence) "n") stdscr.refresh() c = stdscr.getch() if c == ord('q'): break elif c == ord('b'): if i gt; 0: i -= 1 elif c == ord('n'): if i lt; len(doc.sents) - 1: i = 1 curses.wrapper(main)
Комментарии:
1. Если вы думаете,
addstr()
что проблема в этом, попробуйте упростить ее — заменитеstr(sentence)
на короткую литеральную строку, чтобы увидеть, работает ли функция вообще, и если это работает, возможно, попробуйтеstr(sentence)[:20]
ограничить длину.2. проклятия записываются на стандартный вывод (что, вероятно, мешает вашему чтению через канал). проклятия сами по себе поддерживают открытие разных выходных данных с помощью
newterm
(что делает это дубликатом), но python не используетnewterm
.