Extrahovat text z OneNote souborů pomocí Python
Pokud potřebujete číst text z Microsoft OneNote .one soubory v Python skriptu, aniž byste instalovali Microsoft Office nebo spouštěli Windows, Aspose.Note FOSS for Python je řešením. Jedná se o 100 % zdarma, open-source knihovnu, která přímo parsuje binární formát OneNote a poskytuje čisté Python API.
Instalace
pip install aspose-note
Žádný API klíč. Žádný licenční soubor. Žádný Microsoft Office.
Nejjednodušší přístup: GetChildNodes(RichText)
Text OneNote je uložen v RichText uzlech rozprostřených napříč stránkami, osnovami a elementy osnov. GetChildNodes(RichText) provádí rekurzivní prohledávání celého stromu dokumentu a vrací každý textový uzel jako plochý seznam:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)
Toto je nejrychlejší způsob, jak získat veškerý textový obsah z .one souboru.
Uložit text do souboru
from aspose.note import Document, RichText
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"Saved {len(lines)} text blocks to extracted.txt")
Extrahovat text po stránkách
Když potřebujete vědět, ze které stránky pochází každý textový blok:
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)"
)
page_texts = [rt.Text for rt in page.GetChildNodes(RichText) if rt.Text]
print(f"\n=== {title} ===")
for text in page_texts:
print(text)
Extrahovat hypertextové odkazy
Hyperlinky jsou uloženy na jednotlivých TextRun objektech uvnitř RichText uzlů. Zkontrolujte run.Style.IsHyperlink:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.Runs:
if run.Style.IsHyperlink and run.Style.HyperlinkAddress:
print(f"{run.Text!r} -> {run.Style.HyperlinkAddress}")
Detekovat formátování: tučné, kurzíva, podtržení
Každý TextRun nese formátování po jednotlivých znacích prostřednictvím svého TextStyle:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.Runs:
s = run.Style
if any([s.Bold, s.Italic, s.Underline]):
flags = ", ".join(f for f, v in [
("bold", s.Bold), ("italic", s.Italic), ("underline", s.Underline)
] if v)
print(f"[{flags}] {run.Text.strip()!r}")
Číst ze streamu
Funguje s cloudovým úložištěm, těly HTTP odpovědí nebo paměťovými buffery:
import io, urllib.request
from aspose.note import Document, RichText
##Example: load from bytes already in memory
one_bytes = open("MyNotes.one", "rb").read()
doc = Document(io.BytesIO(one_bytes))
texts = [rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text]
print(f"Extracted {len(texts)} text block(s)")
Oprava kódování ve Windows
Na Windows terminálech, sys.stdout může používat staré kódování, které selhává u Unicode znaků. Přidejte toto na začátek svého skriptu:
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
Co knihovna podporuje
| Funkce | Podporováno |
|---|---|
Číst .one soubory (cesta nebo proud) | Ano |
Extrahovat RichText.Text (prostý text) | Ano |
Zkontrolovat TextRun.Style (tučný, kurzíva, hyperodkaz, písmo) | Ano |
| Extrahovat text z buněk tabulky | Ano |
| Číst názvy stránek | Ano |
Zapsat zpět do .one | Ne |
| Šifrované dokumenty | Ne |