Tekstuttrekk — 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 inneholder både en ren tekst .Text streng og en .TextRuns liste over individuelt stiliserte TextRun segmenter. Denne siden dokumenterer alle tilgjengelige tekstuttrekkingsmønstre.


Ekstraher all ren tekst

Den raskeste måten å hente all tekst fra et dokument på er GetChildNodes(RichText), som utfører en rekursiv dybde‑først gjennomgang av 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)

Samle i en liste og slå sammen:

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
)

Ekstraher tekst per side

Organiser ekstrahert tekst etter sidetittel:

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øk formateringssegmenter

RichText.TextRuns er en liste over TextRun objekter. Hver kjøring dekker et sammenhengende område av 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}")

Referanse for TextStyle‑egenskap

EgenskapTypeBeskrivelse
IsBoldboolFet tekst
IsItalicboolKursiv tekst
IsUnderlineboolUnderstreket tekst
IsStrikethroughboolGjennomstreket tekst
IsSuperscriptboolHevet
IsSubscriptboolSenket
FontName`strNone`
FontSize`floatNone`
FontColor`intNone`
Highlight`intNone`
Language`intNone`
IsHyperlinkboolOm dette segmentet er en hyperlenke
HyperlinkAddress`strNone`

Ekstraher hyperlenker

Hyperlenker lagres på TextRun nivå. Sjekk 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}")

Ekstraher fet og uthevet tekst

Filtrer segmenter etter formateringsegenskaper for å isolere spesifikt innhold:

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

Ekstraher tekst fra tittelfelter

Sidetitler er RichText noder inne i Title objektet. De blir ikke returnert av et toppnivå GetChildNodes(RichText) på siden med mindre du inkluderer Title undertrær. Få tilgang til 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)

Ekstraher tekst fra tabeller

Tabellceller inneholder RichText underordnede. Bruk nestede GetChildNodes kall:

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)

Tekstoperasjoner i minnet

Erstatt tekst

RichText.Replace(old_value, new_value) erstatter tekst i minnet på tvers av alle kjøringer:

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

Legg til 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

Lagre hentet 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øker etter hele tre som inkluderer alle sider, disposisjoner og disposisjonselementer. Kall den på en spesifikk Page for å begrense omfanget.
  • Sjekk alltid rt.Text (eller if rt.Text:) RichText noder finnes i noen dokumenter.
  • På Windows, konfigurer sys.stdout til UTF-8 for å unngå UnicodeEncodeError når du skriver ut tegn utenfor systemets tegnsett.
  • TextRun har kun Text og Style felter. Det finnes ingen Start/End offset‑egenskaper; for å finne en kjørs tekst innenfor den overordnede RichText.Text, run.Text innenfor rt.Text manuelt.

Se også

 Norsk