Textentfernung Aspose.Note FOSS für Python

Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText Jeder Knoten. RichText enthält sowohl einen einfachen Text als auch eine .Text String und ein .TextRuns Liste der individuell gestalteten TextRun Diese Seite dokumentiert alle verfügbaren Text-Extraktionsmuster.


Alle einfachen Texte extrahieren

Der schnellste Weg, um den gesamten Text aus einem Dokument zu erhalten ist: GetChildNodes(RichText), die eine rekursive Tiefen-First-Überquerung über den gesamten DOM durchführt:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    if rt.Text:
        print(rt.Text)

Sammeln Sie eine Liste und schließen Sie sich an:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
all_text = "\n".join(
    rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text
)

Text pro Seite extrahieren

Ausgenommene Texte nach Seitenbezeichnungen ordnen:

from aspose.note import Document, Page, RichText

doc = Document("MyNotes.one")
for page in doc.GetChildNodes(Page):
    title = (
        page.Title.TitleText.Text
        if page.Title and page.Title.TitleText
        else "(untitled)"
    )
    print(f"\n=== {title} ===")
    for rt in page.GetChildNodes(RichText):
        if rt.Text:
            print(rt.Text)

Überprüfen von Formatierungsläufen

RichText.TextRuns ist eine Liste von TextRun Objekt. Jeder Lauf umfasst einen zusammenhängenden Bereich von Zeichen mit einem einheitlichen TextStyle:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    for run in rt.TextRuns:
        style = run.Style
        parts = []
        if style.IsBold:          parts.append("bold")
        if style.IsItalic:        parts.append("italic")
        if style.IsUnderline:     parts.append("underline")
        if style.IsStrikethrough: parts.append("strikethrough")
        if style.IsSuperscript:   parts.append("superscript")
        if style.IsSubscript:     parts.append("subscript")
        if style.FontName:      parts.append(f"font={style.FontName!r}")
        if style.FontSize:      parts.append(f"size={style.FontSize}pt")
        label = ", ".join(parts) if parts else "plain"
        print(f"[{label}] {run.Text!r}")

TextStyle-Eigenschaftsbezug

Immobilien und VermögenswerteTyp derBeschreibung
IsBoldboolFettgeschriebener Text
IsItalicboolKursivgeschriebener Text
IsUnderlineboolUnterstrichener Text
IsStrikethroughboolDurchschlag durch Text
IsSuperscriptboolÜberschrift
IsSubscriptboolAbonnement für die
FontName`strNone`
FontSize`floatNone`
FontColor`intNone`
Highlight`intNone`
Language`intNone`
IsHyperlinkboolOb dieser Lauf ein Hyperlink ist
HyperlinkAddress`strNone`

Hyperlinks extrahieren

Hyperlinks werden auf der Webseite des TextRun - Das ist ein Level. Style.IsHyperlink:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    for run in rt.TextRuns:
        if run.Style.IsHyperlink and run.Style.HyperlinkAddress:
            print(f"  {run.Text!r:40s} -> {run.Style.HyperlinkAddress}")

Auszug von Text mit fett und unterstrichenem Schriftzug

Filter läuft durch Formatierung von Eigenschaften, um spezifische Inhalte zu isolieren:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
print("=== Bold segments ===")
for rt in doc.GetChildNodes(RichText):
    for run in rt.TextRuns:
        if run.Style.IsBold and run.Text.strip():
            print(f"  {run.Text.strip()!r}")

print("\n=== Highlighted segments ===")
for rt in doc.GetChildNodes(RichText):
    for run in rt.TextRuns:
        if run.Style.Highlight is not None and run.Text.strip():
            color = f"#{run.Style.Highlight & 0xFFFFFF:06X}"
            print(f"  [{color}] {run.Text.strip()!r}")

Text aus Titelblöcken extrahieren

Die Titel der Seiten sind: RichText Knoten innerhalb der Title Objekt. Sie werden nicht von einem Top-Level zurückgegeben GetChildNodes(RichText) Auf der Seite, es sei denn, Sie schließen die Title Sie können direkt auf sie zugreifen:

from aspose.note import Document, Page

doc = Document("MyNotes.one")
for page in doc.GetChildNodes(Page):
    if page.Title:
        if page.Title.TitleText:
            print("Title text:", page.Title.TitleText.Text)
        if page.Title.TitleDate:
            print("Title date:", page.Title.TitleDate.Text)
        if page.Title.TitleTime:
            print("Title time:", page.Title.TitleTime.Text)

Text aus Tabellen extrahieren

Tabellenzellen enthalten: RichText Kinder. Verwenden Sie in der Nähe von GetChildNodes Anrufe:

from aspose.note import Document, Table, TableRow, TableCell, RichText

doc = Document("MyNotes.one")
for table in doc.GetChildNodes(Table):
    for row in table.GetChildNodes(TableRow):
        row_values = []
        for cell in row.GetChildNodes(TableCell):
            cell_text = " ".join(
                rt.Text for rt in cell.GetChildNodes(RichText)
            ).strip()
            row_values.append(cell_text)
        print(row_values)

Text-Operationen im Speicher

Ersetzen von Text

RichText.Replace(old_value, new_value) Ersetzt Text im Speicher über alle Laufzeiten:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    rt.Replace("TODO", "DONE")
##Changes are in-memory only; saving back to .one is not supported

Einen Text hinzufügen .

from aspose.note import Document, RichText, TextStyle

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    rt.Append(" [reviewed]")  # appends with default style
    break  # just the first node in this example

Ausgeschriebenen Text in Datei speichern

import sys
from aspose.note import Document, RichText

if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

doc = Document("MyNotes.one")
lines = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]

with open("extracted.txt", "w", encoding="utf-8") as f:
    f.write("\n".join(lines))

print(f"Extracted {len(lines)} text blocks.")

Tipps für die Kinder

  • GetChildNodes(RichText) auf einer Document Die Suche nach den vollständig Tree, einschließlich aller Seiten, Umrisse und Umschlagelemente. Rufen Sie es auf eine bestimmte Page Umfang zu begrenzen.
  • Überprüfen Sie immer . rt.Text (oder if rt.Text:) vor dem Drucken als leer. RichText in einigen Dokumenten existieren.
  • Auf Windows neu konfigurieren sys.stdout UTF-8 zu vermeiden. UnicodeEncodeError bei dem Drucken von Zeichen außerhalb der Systemcode-Seite.
  • TextRun hat nur Text und . Style Die Kommission hat die Start/End Offset-Eigenschaften; um den Text eines Laufs innerhalb des Elternteils zu finden RichText.Text, Suche nach run.Text innerhalb von: rt.Text manuell.

Siehe auch:

 Deutsch