Tekstin poiminta — Aspose.Note FOSS for Python

Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText solmu. Jokainen RichText sisältää sekä tavallisen tekstin .Text merkkijono ja .TextRuns lista yksilöllisesti tyylitellyistä TextRun segmenttejä. Tämä sivu dokumentoi jokaisen saatavilla olevan tekstin poimintamallin.


Poimi kaikki tavallinen teksti

Nopein tapa saada kaikki teksti asiakirjasta on GetChildNodes(RichText), joka suorittaa rekursiivisen syvyyssuuntaisen läpikäynnin koko DOM:in läpi:

from aspose.note import Document, RichText

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

Kerää listaan ja yhdistä:

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
)

Poimi teksti per sivu

Järjestä poimittu teksti sivun otsikon mukaan:

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)

Tarkastele muotoilurunoja

RichText.TextRuns on luettelo TextRun objektia. Jokainen suoritus kattaa yhtenäisen merkkialueen, jossa on tasainen 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-ominaisuuden viite

OminaisuusTyyppiKuvaus
IsBoldboolLihavoitu teksti
IsItalicboolKursivoitu teksti
IsUnderlineboolAlleviivattu teksti
IsStrikethroughboolYliviivattu teksti
IsSuperscriptboolYläindeksi
IsSubscriptboolAlaindeksi
FontName`strNone`
FontSize`floatNone`
FontColor`intNone`
Highlight`intNone`
Language`intNone`
IsHyperlinkboolOnko tämä osa hyperlinkki
HyperlinkAddress`strNone`

Poimi hyperlinkit

Hyperlinkit tallennetaan TextRun tasolla. Tarkista 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}")

Poimi lihavoitu ja korostettu teksti

Suodata osioita muotoiluominaisuuksien perusteella eristääksesi tiettyä sisältöä:

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

Poimi teksti otsikkolohkoista

Sivun otsikot ovat RichText solmut sisällä Title objekti. Ne eivät palautu ylä‑tason GetChildNodes(RichText) sivulla, ellei sisällytä Title alipuu. Pääset niihin suoraan:

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)

Poimi teksti tauluista

Taulukon solut sisältävät RichText lapsia. Käytä sisäkkäisiä GetChildNodes kutsuja:

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)

Muistissa tapahtuvat tekstitoiminnot

Korvaa teksti

RichText.Replace(old_value, new_value) korvaa tekstiä muistissa kaikissa suorituksissa:

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

Lisää tekstijakso

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

Tallenna poimittu teksti tiedostoon

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

Vinkkejä

  • GetChildNodes(RichText) on Document etsii koko puu, joka sisältää kaikki sivut, sisällysluettelot ja sisällysluettelon elementit. Kutsu sitä tietyllä Page rajoittaaksesi laajuutta.
  • Tarkista aina rt.Text (tai if rt.Text:) RichText ) ennen tulostamista, koska tyhjät.
  • solmut esiintyvät joissakin asiakirjoissa. sys.stdout Windowsissa, määritä uudelleen UnicodeEncodeError UTF-8:ksi välttääksesi.
  • TextRun kun tulostetaan merkkejä, jotka eivät kuulu järjestelmän koodisivulle. Text sisältää vain Style ja Start/End kenttiä. Ei ole RichText.Text,offset-ominaisuuksia; paikantaaksesi runin tekstin vanhemman run.Text , etsi rt.Text manuaalisesti.

Katso myös

 Suomi