Teksto išgavimas — Aspose.Note FOSS, skirtas Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText mazgas. Kiekvienas RichText laiko tiek paprasto teksto .Text eilutę ir .TextRuns sąrašą, atskirai stilizuotų TextRun segmentų. Šis puslapis dokumentuoja visus prieinamus teksto išgavimosi šablonus.
Išgauti visą paprastą tekstą
Greičiausias būdas gauti visą tekstą iš dokumento yra GetChildNodes(RichText), kuris atlieka rekursinį depth-first perėjimą per visą DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Surinkite į sąrašą ir sujunkite:
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
)Išgauti tekstą pagal puslapį
Organizuokite išgautą tekstą pagal puslapio pavadinimą:
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)Tikrinti formatavimo sekas
RichText.TextRuns yra sąrašas TextRun objektų. Kiekvienas vykdymas apima nuoseklų simbolių intervalą su vienodu 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 savybės nuoroda
| Savybė | Tipas | Aprašymas |
|---|---|---|
IsBold | bool | Pusjuodis tekstas |
IsItalic | bool | Kursyvuotas tekstas |
IsUnderline | bool | Pabrauktas tekstas |
IsStrikethrough | bool | Perbrauktas tekstas |
IsSuperscript | bool | Viršutinis indeksas |
IsSubscript | bool | Apatinis indeksas |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Ar šis fragmentas yra hipersaitas |
HyperlinkAddress | `str | None` |
Išgauti hipersaitus
Hipersaitai saugomi TextRun lygyje. Patikrinkite 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}")Išgauti pusjuodį ir paryškintą tekstą
Filtruokite sekas pagal formatavimo savybes, kad izoliuotumėte konkretų turinį:
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}")Išgauti tekstą iš antraštės blokų
Puslapio antraštės yra RichText mazgai viduje Title objektas. Jos nėra grąžinamos aukščiausio lygio GetChildNodes(RichText) puslapyje, nebent įtraukiate Title submedį. Pasiekite juos tiesiogiai:
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)Išgauti tekstą iš lentelių
Lentelės langeliai turi RichText vaikus. Naudokite įdėtus GetChildNodes kvietimus:
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)Atminties teksto operacijos
Pakeisti tekstą
RichText.Replace(old_value, new_value) pakeičia tekstą atmintyje per visus vykdymus:
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 supportedPridėti teksto seką
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 exampleIšsaugoti išgautą tekstą į 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.")Patarimai
GetChildNodes(RichText)antDocumentieško visą medis, įskaitant visus puslapius, struktūras ir struktūros elementus. Iškvieskite jį konkrečiamPagenorint apriboti apimtį.- Visada patikrinkite
rt.Text(arbaif rt.Text:)RichTextmazgai kai kuriuose dokumentuose. - „Windows“ sistemoje, perkonfigūruokite
sys.stdoutį UTF-8, kad išvengtumėteUnicodeEncodeErrorspausdinant simbolius, kurie nėra sistemos kodų puslapyje. TextRunturi tikTextirStylelaukų. NėraStart/Endposlinkio savybių; norint rasti vykdymo tekstą tėviniameRichText.Text, ieškokiterun.Textvidujert.Textrankiniu būdu.