Tekstudtræk — Aspose.Note FOSS for Python

Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText node. Hver RichText indeholder både en ren tekst .Text string og en .TextRuns liste over individuelt formaterede TextRun segmenter. Denne side dokumenterer alle tilgængelige tekstudtrækningsmønstre.


Udtræk al ren tekst

Den hurtigste måde at hente al tekst fra et dokument er GetChildNodes(RichText), som udfører en rekursiv dybde‑først gennemgang af hele DOM’en:

from aspose.note import Document, RichText

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

Indsaml i en liste og sammensæt:

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
)

Udtræk tekst pr. side

Organiser udtrukket tekst efter sidetitel:

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)

Undersøg formateringssekvenser

RichText.TextRuns er en liste over TextRun objekter. Hver kørsel dækker et sammenhængende interval af tegn med en ensartet 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}")

Reference til TextStyle‑egenskaber

EgenskabTypeBeskrivelse
IsBoldboolFed tekst
IsItalicboolKursiv tekst
IsUnderlineboolUnderstreget tekst
IsStrikethroughboolGennemstreget tekst
IsSuperscriptboolHævet skrift
IsSubscriptboolSænket skrift
FontName`strNone`
FontSize`floatNone`
FontColor`intNone`
Highlight`intNone`
Language`intNone`
IsHyperlinkboolOm dette run er et hyperlink
HyperlinkAddress`strNone`

Udtræk hyperlinks

Hyperlinks gemmes på den TextRun niveau. Tjek 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}")

Udtræk fed og fremhævet tekst

Filtrer sekvenser efter formaterings‑egenskaber for at isolere specifikt indhold:

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}")

Udtræk tekst fra titelblokke

Sidetitler er RichText noder inde i den Title objekt. De returneres ikke af et top‑niveau GetChildNodes(RichText) på siden, medmindre du inkluderer den Title undertræ. Tilgå dem direkte:

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)

Udtræk tekst fra tabeller

Tabelceller indeholder RichText børn. Brug indlejrede GetChildNodes kald:

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)

Tekstoperationer i hukommelsen

Erstat tekst

RichText.Replace(old_value, new_value) erstatter tekst i hukommelsen på tværs af alle kørsler:

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

Tilføj en tekst-run

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

Gem udtrukket tekst til fil

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.")

Tips

  • GetChildNodes(RichText) på en Document søger i hele træ inklusive alle sider, oversigter og oversigtselementer. Kald den på en specifik Page for at begrænse omfanget.
  • Kontroller altid rt.Text (eller if rt.Text:) RichText noder findes i nogle dokumenter.
  • På Windows skal du omkonfigurere sys.stdout til UTF-8 for at undgå UnicodeEncodeError når du udskriver tegn uden for systemets tegnsæt.
  • TextRun har kun Text og Style felter. Der er ingen Start/End offset‑egenskaber; for at lokalisere en runs tekst inden for forælderen RichText.Text, søg efter run.Text inden for rt.Text manuelt.

Se også

 Dansk