Išgauti tekstą iš OneNote failų naudojant Python
Jei jums reikia skaityti tekstą iš Microsoft OneNote .one failus Python skripte, neįdiegiant Microsoft Office ar nenaudojant Windows, Aspose.Note FOSS for Python yra sprendimas. Tai 100 % nemokama, atviro kodo biblioteka, kuri tiesiogiai analizuoja OneNote dvejetainį formatą ir pateikia švarią Python API.
Įdiegti
pip install aspose-note
Nėra API rakto. Nėra licencijos failo. Nėra Microsoft Office.
Paprastausias metodas: GetChildNodes(RichText)
OneNote tekstas saugomas RichText mazgai, paskirstyti per puslapius, struktūras ir struktūrų elementus. GetChildNodes(RichText) atlieka rekursinę visos dokumento medžio paiešką ir grąžina kiekvieną teksto mazgą kaip plokščią sąrašą:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)
Tai greičiausias būdas gauti visą teksto turinį iš .one failo.
Išsaugoti tekstą į failą
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")
Išgauti tekstą pagal puslapį
Kai reikia žinoti, iš kurio puslapio kilęs kiekvienas teksto blokas:
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)
Išgauti nuorodas
Hipersaitai saugomi atskiruose TextRun objektuose RichText mazguose. Patikrinkite 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}")
Nustatyti formatavimą: paryškintas, kursyvas, pabrauktas
Kiekvienas TextRun neša per simbolį formatavimą per savo 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}")
Skaityti iš srauto
Veikia su debesų saugykla, HTTP atsakymų kūnais arba atminties buferiais:
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 koduotės pataisa
Windows terminaluose, sys.stdout gali naudoti seną koduotę, kuri nulūžta su Unicode simboliais. Pridėkite tai savo skripto pradžioje:
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
Ką biblioteka palaiko
| Funkcija | Palaikoma |
|---|---|
Skaityti .one failai (kelias arba srautas) | Taip |
Išskleisti RichText.Text (grynasis tekstas) | Taip |
Patikrinti TextRun.Style (pusjuodis, kursyvas, hipersaitas, šriftas) | Taip |
| Išgauti tekstą iš lentelės langelių | Taip |
| Skaityti puslapių antraštes | Taip |
Rašyti atgal į .one | Ne |
| Užšifruoti dokumentai | Ne |