Výběr textu Aspose.Note FOSS pro Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText Každý uzel. RichText obsahuje jak prostý text, tak i přehled. .Text řetězec a .TextRuns Seznam individuálně upravených TextRun Tato stránka dokumentuje každý dostupný vzor extrakce textu.
Vytáhnout všechny prosté texty
Nejrychlejší způsob, jak získat veškerý text z dokumentu je: GetChildNodes(RichText), který provádí rekurzivní průjezd v hloubce po celém DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Shromážděte se do seznamu a připojte:
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
)Výběr textu na stránku
Vyčleněný text se uspořádá podle názvu stránky:
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)Zkontrolovat formátování
RichText.TextRuns je seznam: TextRun Objekty. Každý běh pokrývá souvislý rozsah znaků s jednotným 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 Odkaz na vlastnost
| Vlastnictví | Typ: | Popis: |
|---|---|---|
IsBold | bool | Tvrdá textová položka |
IsItalic | bool | Kurzově: |
IsUnderline | bool | Podtržený text |
IsStrikethrough | bool | Procházení textem |
IsSuperscript | bool | Přehled |
IsSubscript | bool | Podpis |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Zda je tento běh hypertextový odkaz. |
HyperlinkAddress | `str | None` |
Výběr hypertextových odkazů
Hypertextové odkazy jsou uložené na stránkách: TextRun Zkontrolujte. 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}")Vytáhnout text v tučné a podtržené barvě
Filtr běží formátováním vlastností pro izolaci konkrétního obsahu:
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}")Výběr textu z bloků titulů
Název stránky je: RichText uzly uvnitř Title Objekt. Nejsou vráceny nejvyšší úrovní GetChildNodes(RichText) na stránce, pokud nezahrnujete Title Přístup přímo:
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)Výběr textu z tabulek
Buňky tabulky obsahují: RichText Použití v hnízdě. GetChildNodes volání:
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)Původní funkce:
Změnit text
RichText.Replace(old_value, new_value) nahrazuje text v paměti ve všech běžných režimech:
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 supportedPřidání textového spouštění
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 exampleUložení vyčerpaného textu do souboru
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.")Tipy.
GetChildNodes(RichText)na: a)Documentprohledává Celá strom včetně všech stránek, obrysů a prvků obvodu. Zavolejte ho na konkrétníPageomezit rozsah.- Vždy se podívej.
rt.Text(neboif rt.Text:) před tiskem, jako prázdná.RichTextV některých dokumentech existují uzly. - Na Windows, překonfigurujte
sys.stdoutna UTF-8 pro vyhnutí seUnicodeEncodeErrorpři tiskání znaků mimo stránku systémového kódu. TextRunmá pouze:Texta)StyleV těchto oblastech nejsou žádnéStart/Endoffset vlastnosti; najít text běhu v rámci rodičeRichText.Text, hledatrun.Textv rámci:rt.Textručně.