Textutdrag — Aspose.Note FOSS för Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText nod. Varje RichText innehåller både en vanlig text .Text sträng och en .TextRuns lista med individuellt stylade TextRun segment. Den här sidan dokumenterar alla tillgängliga textutdragsmönster.
Extrahera all rentext
Det snabbaste sättet att hämta all text från ett dokument är GetChildNodes(RichText), vilket utför en rekursiv djupförst-genomgång av hela DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Samla i en lista och slå ihop:
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
)Extrahera text per sida
Organisera extraherad text efter sidtitel:
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)Inspektera formateringssekvenser
RichText.TextRuns är en lista med TextRun objekt. Varje körning täcker ett sammanhängande intervall av tecken med en enhetlig 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}")Referens för TextStyle-egenskaper
| Egenskap | Typ | Beskrivning |
|---|---|---|
IsBold | bool | Fet text |
IsItalic | bool | Kursiv text |
IsUnderline | bool | Understruken text |
IsStrikethrough | bool | Genomstruken text |
IsSuperscript | bool | Upphöjd |
IsSubscript | bool | Nedsänkt |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Om detta körningssegment är en hyperlänk |
HyperlinkAddress | `str | None` |
Extrahera hyperlänkar
Hyperlänkar lagras på TextRun nivå. Kontrollera 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}")Extrahera fet och markerad text
Filtrera sekvenser efter formateringsegenskaper för att isolera specifikt innehåll:
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}")Extrahera text från titelblock
Sidtitlar är RichText noder i Title objektet. De returneras inte av en top-level GetChildNodes(RichText) på sidan om du inte inkluderar Title subträd. Åtkomst till dem direkt:
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)Extrahera text från tabeller
Tabellceller innehåller RichText barn. Använd nästlade GetChildNodes anrop:
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)Textoperationer i minnet
Ersätt text
RichText.Replace(old_value, new_value) ersätter text i minnet under alla körningar:
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 supportedLägg till ett text‑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 exampleSpara extraherad text till 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 hela träd inklusive alla sidor, konturer och konturelement. Anropa det på en specifikPageför att begränsa omfattningen.- Kontrollera alltid
rt.Text(ellerif rt.Text:) innan utskrift, eftersom tommaRichTextnoder finns i vissa dokument. - På Windows, konfigurera om
sys.stdouttill UTF-8 för att undvikaUnicodeEncodeErrorvid utskrift av tecken utanför systemets kodsida. TextRunhar endastTextochStylefält. Det finns ingaStart/Endoffset‑egenskaper; för att lokalisera en runs text inom föräldernRichText.Text, sök efterrun.Textinomrt.Textmanuellt.