Extracție de text — Aspose.Note FOSS pentru Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText nod. Fiecare RichText conține atât un text simplu .Text string și un .TextRuns listă de stiluri individuale TextRun segmente. Această pagină documentează fiecare model disponibil de extragere a textului.
Extrage tot textul simplu
Cea mai rapidă metodă de a obține tot textul dintr-un document este GetChildNodes(RichText), care efectuează o traversare recursivă în adâncime a întregului DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Colectează într-o listă și alătură:
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
)Extrage textul pe pagină
Organizează textul extras pe titlul paginii:
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)Inspectează rulurile de formatare
RichText.TextRuns este o listă de TextRun obiecte. Fiecare rulare acoperă un interval continuu de caractere cu un uniform 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}")Referință proprietate TextStyle
| Proprietate | Tip | Descriere |
|---|---|---|
IsBold | bool | Text îngroșat |
IsItalic | bool | Text italic |
IsUnderline | bool | Text subliniat |
IsStrikethrough | bool | Text tăiat |
IsSuperscript | bool | Supra-scris |
IsSubscript | bool | Subscris |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Dacă această secvență este un hyperlink |
HyperlinkAddress | `str | None` |
Extrage hyperlink-uri
Hyperlink-urile sunt stocate la TextRun nivel. Verificați 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}")Extrage text îngroșat și evidențiat
Filtrează rulurile după proprietățile de formatare pentru a izola conținutul specific:
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}")Extrage textul din blocurile de titlu
Titlurile paginilor sunt RichText noduri în interiorul Title obiect. Ele nu sunt returnate de un top-level GetChildNodes(RichText) pe pagină, cu excepția dacă incluzi Title subarbore. Accesează-le direct:
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)Extrage textul din tabele
Celulele tabelului conțin RichText copii. Folosiți imbricate GetChildNodes apeluri:
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)Operații de text în memorie
Înlocuiește textul
RichText.Replace(old_value, new_value) înlocuiește textul în memorie în toate rulările:
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 supportedAdaugă un run de text
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 exampleSalvează textul extras în fișier
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.")Sfaturi
GetChildNodes(RichText)pe unDocumentcaută întregul arborele, incluzând toate paginile, contururile și elementele de contur. Apelați-l pe un anumitPagepentru a limita domeniul.- Verificați întotdeauna
rt.Text(sauif rt.Text:) înainte de tipărire, ca golRichTextnodurile există în unele documente. - Pe Windows, reconfigure
sys.stdoutla UTF-8 pentru a evitaUnicodeEncodeErrorcând se tipăresc caractere în afara paginii de cod a sistemului. TextRunare doarTextșiStylecâmpuri. Nu existăStart/Endproprietăți de offset; pentru a localiza textul unui run în cadrul părinteluiRichText.Text, cautărun.Textînrt.Textmanual.