Teksta izguve — Aspose.Note FOSS for Python

Aspose.Note FOSS for Python atklāj pilna teksta saturu katrā OneNote lapā caur RichText mezglu. Katrs RichText satur gan vienkārša teksta .Text virkni, gan .TextRuns sarakstu ar individuāli stilizētiem TextRun segmentiem. Šī lapa dokumentē visus pieejamos teksta izguves modeļus.


Izvilkt visu vienkāršo tekstu

Ātrākais veids, kā iegūt visu tekstu no dokumenta, ir GetChildNodes(RichText), kas veic rekursīvu dziļuma pirmās kārtas pārlūkošanu visā DOM:

from aspose.note import Document, RichText

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

Savāc sarakstā un pievieno:

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
)

Izvilkt tekstu katrā lapā

Organizēt izvilkto tekstu pēc lapas nosaukuma:

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)

Pārbaudīt formatēšanas fragmentus

RichText.TextRuns ir saraksts ar TextRun objektiem. Katrs posms aptver nepārtrauktu rakstzīmju diapazonu ar vienotu 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 īpašības atsauce

ĪpašībaTipsApraksts
IsBoldboolTreknraksts
IsItalicboolSlīpraksts
IsUnderlineboolPasvītrots teksts
IsStrikethroughboolPārsvītrots teksts
IsSuperscriptboolAugšraksts
IsSubscriptboolApakšraksts
FontNamestr | NoneFonta ģimenes nosaukums
FontSizefloat | NoneFonta lielums punktos
FontColorint | NoneFonta krāsa kā ARGB vesels skaitlis
Highlightint | NoneFona izcēluma krāsa kā ARGB vesels skaitlis
Languageint | NoneValodas identifikators (LCID)
IsHyperlinkboolVai šis fragments ir hipersaite
HyperlinkAddressstr | NoneURL, kad IsHyperlink ir True

Izvilkt hipersaites

Hipersaites tiek glabātas TextRun līmenī. Pārbaudiet 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}")

Izgūt treknu un izcelto tekstu

Filtrs darbojas, izmantojot formatēšanas īpašības, lai izolētu konkrētu saturu:

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

Izvilkt tekstu no virsraksta blokiem

Lapas nosaukumi ir RichText mezgli iekš Title objekta. Tie netiek atgriezti ar augšējā līmeņa GetChildNodes(RichText) lapā, ja vien neiekļaujat Title apakškoku. Piekļūstiet tiem tieši:

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)

Izvilkt tekstu no tabulām

Tabulas šūnas satur RichText bērnus. Izmantojiet ligzdotus GetChildNodes izsaukumus:

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)

Teksta operācijas atmiņā

Aizstāt tekstu

RichText.Replace(old_value, new_value) aizstāj tekstu atmiņā visos posmos:

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

Pievienot teksta fragmentu

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

Saglabāt izvilkto tekstu 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.")

Padomi

  • GetChildNodes(RichText) uz Document meklē visu koku, ieskaitot visas lapas, struktūras un struktūras elementus. Izsauciet to uz konkrētu Page, lai ierobežotu apjomu.
  • Vienmēr pārbaudiet rt.Text (vai if rt.Text:) pirms drukāšanas, jo dažos dokumentos pastāv tukši RichText mezgli.
  • Windows vidē pārkonfigurējiet sys.stdout uz UTF-8, lai izvairītos no UnicodeEncodeError, drukājot rakstzīmes, kas pārsniedz sistēmas kodējuma lapu.
  • TextRun satur tikai Text un Style laukus. Nav Start/End nobīdes īpašību; lai atrastu skrējiena tekstu vecākā RichText.Text, meklējiet run.Text iekš rt.Text manuāli.

Skatīt arī

 Latviešu