Vytáhnout text z souborů OneNote pomocí Pythonu
Pokud potřebujete přečíst text z aplikace Microsoft OneNote .one soubory v skriptu Python, aniž by bylo nainstalováno Microsoft Office nebo spouštění systému Windows;, Aspose.Note FOSS for Python je řešení. Je to 100% volná open-source knihovna, která analyzuje OneNote binární formát přímo a odhaluje čistý Python API.
Instalace
pip install aspose-noteŽádný API klíč, žádný licenční soubor ani Microsoft Office.
Nejjednodušší přístup: GetChildNodes(RichText)
Text v OneNotu je uložen ve RichText uzly distribuované napříč stránkami, obrysem a prvky obvodu. GetChildNodes(RichText) provádí rekurzivní vyhledávání celého stromu dokumentů a vrací každý textový uzel jako listinu:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)
To je nejrychlejší způsob, jak získat veškerý textový obsah z .one - Soubor.
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")
Výběr textu na stránku
Když potřebujete vědět, z jaké stránky každý blok textu pochází:
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)
Výběr hypertextových odkazů
Hypertextové odkazy jsou uložené na jednotlivých stránkách. TextRun objekty v rámci RichText Zkontrolujte. run.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} -> {run.Style.HyperlinkAddress}")
Zjistěte formátování: Drsná, kurzivní a podtržená.
Každá. TextRun přenáší formátování na znak 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.TextRuns:
s = run.Style
if any([s.IsBold, s.IsItalic, s.IsUnderline]):
flags = ", ".join(f for f, v in [
("bold", s.IsBold), ("italic", s.IsItalic), ("underline", s.IsUnderline)
] if v)
print(f"[{flags}] {run.Text.strip()!r}")
Čtěte z pramene .
Funguje s cloudovým ukládáním, HTTP odpovědnými těly 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í Windows
Na Windows terminálech, sys.stdout může použít starší kódování, které se rozpadá na znaky Unicode. Přidejte toto na začátku vašeho skriptu:
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
Co knihovna podporuje
| Významné vlastnosti | Podpořená |
|---|---|
Čtěte. .one soubory (cesta nebo proud) | Ano , ano . |
Výtažek z nízké vody RichText.Text (snadný text) | Ano , ano . |
Inspekce TextRun.Style (tvrdá, kurzivní, hypertextový odkaz, písmo) | Ano , ano . |
| Výběr textu z buněk tabulky | Ano , ano . |
| Čtěte titulky stránek. | Ano , ano . |
Napiš mi zpět. .one | Ne, ne. |
| Zašifrované dokumenty | Ne, ne. |