Ich versuche, einen Text zu drucken, während bestimmte Wörter und Wort Bigramme hervorheben. Dies wäre ziemlich geradlinig, wenn ich die anderen Token wie Interpunktion und dergleichen nicht drucken müsste.Markieren Sie bestimmte Wörter in der Reihenfolge
Ich habe eine Liste von Wörtern zu markieren und eine andere Liste von Wort Bigrammen zu markieren.
einzelne Wörter Hervorhebungen ist ziemlich einfach, wie zum Beispiel:
import re
import string
regex_pattern = re.compile("([%s \n])" % string.punctuation)
def highlighter(content, terms_to_hightlight):
tokens = regex_pattern.split(content)
for token in tokens:
if token.lower() in terms_to_hightlight:
print('\x1b[6;30;42m' + token + '\x1b[0m', end="")
else:
print(token, end="")
Nur markieren Wörter, die in der Reihenfolge erscheinen komplexer ist. Ich habe mit Iteratoren herumgespielt, aber ich konnte mir nichts einfallen lassen, was nicht offensichtlich kompliziert ist.
Können Sie ein Beispiel für Fälle angeben, in denen Ihre 'Highlighter'-Funktion wie erwartet und * nicht * wie erwartet funktioniert? Tipp: Wie sehen "Wörter, die in Reihenfolge erscheinen" für dich aus? – blacksite
Sie könnten den Text zuerst in eine Liste aufteilen und dann diese Liste durchlaufen (ähnlich wie Sie es bereits getan haben). Dann gehen Sie durch diese Liste und überprüfen, ob das aktuelle und das nächste Element ein gültiges Bigramm ist. Wenn dies der Fall ist, drücken Sie die Wörter "hervorgehoben" in eine separate Liste. Andernfalls drücken Sie es "unmarkiert" in die Liste. Stellen Sie sicher, dass Sie immer überprüfen, ob das vorherige Bigramm bereits das aktuelle Element (der neuen Liste) markiert hat. –
@not_a_robot Er sucht wahrscheinlich nach Wortbigrammen, was zwei Wörter hintereinander bedeutet. Er versucht, einige Wörter hervorzuheben, wenn sie in einer Liste von Bigrammen sind. Dies führt zu überlappenden Problemen. –