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
| Egenskap | Type | Beskrivelse |
|---|---|---|
IsBold | bool | Fet tekst |
IsItalic | bool | Kursiv tekst |
IsUnderline | bool | Understreket tekst |
IsStrikethrough | bool | Gjennomstreket tekst |
IsSuperscript | bool | Hevet |
IsSubscript | bool | Senket |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Om dette segmentet er en hyperlenke |
HyperlinkAddress | `str | None` |
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 supportedLegg 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 exampleLagre 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å enDocumentsøker etter hele tre som inkluderer alle sider, disposisjoner og disposisjonselementer. Kall den på en spesifikkPagefor å begrense omfanget.- Sjekk alltid
rt.Text(ellerif rt.Text:)RichTextnoder finnes i noen dokumenter. - På Windows, konfigurer
sys.stdouttil UTF-8 for å unngåUnicodeEncodeErrornår du skriver ut tegn utenfor systemets tegnsett. TextRunhar kunTextogStylefelter. Det finnes ingenStart/Endoffset‑egenskaper; for å finne en kjørs tekst innenfor den overordnedeRichText.Text,run.Textinnenforrt.Textmanuelt.