Textutdrag — Aspose.Note FOSS för Python

Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText nod. Varje RichText innehåller både en vanlig text .Text sträng och en .TextRuns lista med individuellt stylade TextRun segment. Den här sidan dokumenterar alla tillgängliga textutdragsmönster.


Extrahera all rentext

Det snabbaste sättet att hämta all text från ett dokument är GetChildNodes(RichText), vilket utför en rekursiv djupförst-genomgång av hela DOM:

from aspose.note import Document, RichText

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

Samla i en lista och slå ihop:

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
)

Extrahera text per sida

Organisera extraherad text efter sidtitel:

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)

Inspektera formateringssekvenser

RichText.TextRuns är en lista med TextRun objekt. Varje körning täcker ett sammanhängande intervall av tecken med en enhetlig 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}")

Referens för TextStyle-egenskaper

EgenskapTypBeskrivning
IsBoldboolFet text
IsItalicboolKursiv text
IsUnderlineboolUnderstruken text
IsStrikethroughboolGenomstruken text
IsSuperscriptboolUpphöjd
IsSubscriptboolNedsänkt
FontName`strNone`
FontSize`floatNone`
FontColor`intNone`
Highlight`intNone`
Language`intNone`
IsHyperlinkboolOm detta körningssegment är en hyperlänk
HyperlinkAddress`strNone`

Extrahera hyperlänkar

Hyperlänkar lagras på TextRun nivå. Kontrollera 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}")

Extrahera fet och markerad text

Filtrera sekvenser efter formateringsegenskaper för att isolera specifikt innehåll:

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

Extrahera text från titelblock

Sidtitlar är RichText noder i Title objektet. De returneras inte av en top-level GetChildNodes(RichText) på sidan om du inte inkluderar Title subträd. Åtkomst till dem direkt:

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)

Extrahera text från tabeller

Tabellceller innehåller RichText barn. Använd nästlade GetChildNodes anrop:

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)

Textoperationer i minnet

Ersätt text

RichText.Replace(old_value, new_value) ersätter text i minnet under alla körningar:

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

Lägg till ett text‑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

Spara extraherad text till 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öker hela träd inklusive alla sidor, konturer och konturelement. Anropa det på en specifik Page för att begränsa omfattningen.
  • Kontrollera alltid rt.Text (eller if rt.Text:) innan utskrift, eftersom tomma RichText noder finns i vissa dokument.
  • På Windows, konfigurera om sys.stdout till UTF-8 för att undvika UnicodeEncodeError vid utskrift av tecken utanför systemets kodsida.
  • TextRun har endast Text och Style fält. Det finns inga Start/End offset‑egenskaper; för att lokalisera en runs text inom föräldern RichText.Text, sök efter run.Text inom rt.Text manuellt.

Se även

 Svenska