Szöveg kinyerése OneNote fájlokból a Python használatával
Ha szöveget kell olvasnod a Microsoft OneNote-ból .one fájlok egy Python szkriptben, a Microsoft Office telepítése vagy a Windows futtatása nélkül, Aspose.Note FOSS for Python a megoldás. Ez egy 100%-ban ingyenes, nyílt forráskódú könyvtár, amely közvetlenül elemzi a OneNote bináris formátumát, és egy tiszta Python API-t biztosít.
Telepítés
pip install aspose-note
Nincs API kulcs. Nincs licencfájl. Nincs Microsoft Office.
A legegyszerűbb megközelítés: GetChildNodes(RichText)
A OneNote szöveg tárolva van RichText csomópontokban, amelyek az oldalak, vázlatok és vázlat elemek között vannak elosztva. GetChildNodes(RichText) rekurzív keresést végez a teljes dokumentumfán, és minden szövegcsoportot egy lapos listaként ad vissza:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)
Ez a leggyorsabb mód arra, hogy minden szövegtartalmat kinyerj egy .one fájlból.
Szöveg mentése fájlba
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")
Szöveg kinyerése oldalanként
Amikor tudnod kell, melyik oldalról származik az egyes szövegrészek:
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)
Hiperhivatkozások kinyerése
A hiperhivatkozások egyedi TextRun objektumokon belül RichText csomópontokban. Ellenőrizd 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}")
Formázás felismerése: félkövér, dőlt, aláhúzott
Minden TextRun karakterenkénti formázást hordoz a 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}")
Olvasás egy adatfolyamból
Felhőalapú tárolókkal, HTTP válaszüzenet-törzsekkel vagy memóriában lévő pufferekkel működik:
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)")
Windows kódolási javítás
Windows terminálokon, sys.stdout használhat egy örökölt kódolást, amely Unicode karaktereknél összeomlik. Add ezt a szkripted elejére:
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
A könyvtár által támogatottak
| Funkció | Támogatott |
|---|---|
Olvas .one fájlok (útvonal vagy adatfolyam) | Igen |
Kivonás RichText.Text (egyszerű szöveg) | Igen |
Ellenőrzés TextRun.Style (félkövér, dőlt, hiperhivatkozás, betűtípus) | Igen |
| Szöveg kinyerése a táblázat celláiból | Igen |
| Oldalcímek olvasása | Igen |
Visszaírás ide .one | Nem |
| Titkosított dokumentumok | Nem |