Tekstudtræk — 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 indeholder både en ren tekst .Text string og en .TextRuns liste over individuelt formaterede TextRun segmenter. Denne side dokumenterer alle tilgængelige tekstudtrækningsmønstre.
Udtræk al ren tekst
Den hurtigste måde at hente al tekst fra et dokument er GetChildNodes(RichText), som udfører en rekursiv dybde‑først gennemgang af 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)Indsaml i en liste og sammensæt:
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
)Udtræk tekst pr. side
Organiser udtrukket tekst efter sidetitel:
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øg formateringssekvenser
RichText.TextRuns er en liste over TextRun objekter. Hver kørsel dækker et sammenhængende interval af 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}")Reference til TextStyle‑egenskaber
| Egenskab | Type | Beskrivelse |
|---|---|---|
IsBold | bool | Fed tekst |
IsItalic | bool | Kursiv tekst |
IsUnderline | bool | Understreget tekst |
IsStrikethrough | bool | Gennemstreget tekst |
IsSuperscript | bool | Hævet skrift |
IsSubscript | bool | Sænket skrift |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Om dette run er et hyperlink |
HyperlinkAddress | `str | None` |
Udtræk hyperlinks
Hyperlinks gemmes på den TextRun niveau. Tjek 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}")Udtræk fed og fremhævet tekst
Filtrer sekvenser efter formaterings‑egenskaber for at isolere specifikt indhold:
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}")Udtræk tekst fra titelblokke
Sidetitler er RichText noder inde i den Title objekt. De returneres ikke af et top‑niveau GetChildNodes(RichText) på siden, medmindre du inkluderer den Title undertræ. Tilgå 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)Udtræk tekst fra tabeller
Tabelceller indeholder RichText børn. Brug indlejrede GetChildNodes kald:
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)Tekstoperationer i hukommelsen
Erstat tekst
RichText.Replace(old_value, new_value) erstatter tekst i hukommelsen på tværs af alle kørsler:
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 supportedTilføj 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 exampleGem udtrukket 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øger i hele træ inklusive alle sider, oversigter og oversigtselementer. Kald den på en specifikPagefor at begrænse omfanget.- Kontroller altid
rt.Text(ellerif rt.Text:)RichTextnoder findes i nogle dokumenter. - På Windows skal du omkonfigurere
sys.stdouttil UTF-8 for at undgåUnicodeEncodeErrornår du udskriver tegn uden for systemets tegnsæt. TextRunhar kunTextogStylefelter. Der er ingenStart/Endoffset‑egenskaber; for at lokalisere en runs tekst inden for forælderenRichText.Text, søg efterrun.Textinden forrt.Textmanuelt.