Teksto išgavimas — Aspose.Note FOSS, skirtas Python

Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText mazgas. Kiekvienas RichText laiko tiek paprasto teksto .Text eilutę ir .TextRuns sąrašą, atskirai stilizuotų TextRun segmentų. Šis puslapis dokumentuoja visus prieinamus teksto išgavimosi šablonus.


Išgauti visą paprastą tekstą

Greičiausias būdas gauti visą tekstą iš dokumento yra GetChildNodes(RichText), kuris atlieka rekursinį depth-first perėjimą per visą DOM:

from aspose.note import Document, RichText

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

Surinkite į sąrašą ir sujunkite:

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
)

Išgauti tekstą pagal puslapį

Organizuokite išgautą tekstą pagal puslapio pavadinimą:

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)

Tikrinti formatavimo sekas

RichText.TextRuns yra sąrašas TextRun objektų. Kiekvienas vykdymas apima nuoseklų simbolių intervalą su vienodu 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 savybės nuoroda

SavybėTipasAprašymas
IsBoldboolPusjuodis tekstas
IsItalicboolKursyvuotas tekstas
IsUnderlineboolPabrauktas tekstas
IsStrikethroughboolPerbrauktas tekstas
IsSuperscriptboolViršutinis indeksas
IsSubscriptboolApatinis indeksas
FontName`strNone`
FontSize`floatNone`
FontColor`intNone`
Highlight`intNone`
Language`intNone`
IsHyperlinkboolAr šis fragmentas yra hipersaitas
HyperlinkAddress`strNone`

Išgauti hipersaitus

Hipersaitai saugomi TextRun lygyje. Patikrinkite 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}")

Išgauti pusjuodį ir paryškintą tekstą

Filtruokite sekas pagal formatavimo savybes, kad izoliuotumėte konkretų turinį:

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

Išgauti tekstą iš antraštės blokų

Puslapio antraštės yra RichText mazgai viduje Title objektas. Jos nėra grąžinamos aukščiausio lygio GetChildNodes(RichText) puslapyje, nebent įtraukiate Title submedį. Pasiekite juos tiesiogiai:

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)

Išgauti tekstą iš lentelių

Lentelės langeliai turi RichText vaikus. Naudokite įdėtus GetChildNodes kvietimus:

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)

Atminties teksto operacijos

Pakeisti tekstą

RichText.Replace(old_value, new_value) pakeičia tekstą atmintyje per visus vykdymus:

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

Pridėti teksto seką

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

Išsaugoti išgautą tekstą į failą

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

Patarimai

  • GetChildNodes(RichText) ant Document ieško visą medis, įskaitant visus puslapius, struktūras ir struktūros elementus. Iškvieskite jį konkrečiam Page norint apriboti apimtį.
  • Visada patikrinkite rt.Text (arba if rt.Text:) RichText mazgai kai kuriuose dokumentuose.
  • „Windows“ sistemoje, perkonfigūruokite sys.stdout į UTF-8, kad išvengtumėte UnicodeEncodeError spausdinant simbolius, kurie nėra sistemos kodų puslapyje.
  • TextRun turi tik Text ir Style laukų. Nėra Start/End poslinkio savybių; norint rasti vykdymo tekstą tėviniame RichText.Text, ieškokite run.Text viduje rt.Text rankiniu būdu.

Žr. taip pat

 Lietuvių