Izvaditi tekst iz OneNote datoteka pomoću Pythona
Ako želite čitati tekst iz Microsoft OneNote-a .one datoteke u Python skriptu, bez instaliranja Microsoft Officea ili pokretanja Windows-a;, Aspose.Note FOSS for Python To je 100% slobodna, open-source knjižnica koja direktno analizira OneNote binarni format i izloži čist Python API.
Instaliraj
pip install aspose-note
Nema API ključa, nema licencnih datoteka.
Najjednostavniji pristup: GetChildNodes(RichText)
OneNote tekst se čuva u: RichText čvorovi raspoređeni na stranicama, skicima i elementima skice. GetChildNodes(RichText) provodi rekurzivnu pretragu cijelog stabla dokumenata i vraća svaki čvor teksta kao ravna lista:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)
Ovo je najbrži način da se sav tekst sadržaj iz a .one -Dopisi.
Sačuvati tekst u datoteku
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")
Izvaditi tekst po stranici
Kada trebate znati s koje stranice je svaki blok teksta došao:
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)
Izvaditi hiperlinkove
Hiperlinkovi su pohranjeni na pojedinačnim web stranicama. TextRun objekte unutar RichText Provjerite. 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}")
Detekcija formata: Dvosmisleno, kurzivno i podrazumevano
Svaki od njih. TextRun nosi po znakom oblikovanje kroz svoj 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}")
Čitajte iz potoka.
Rad s skladištenjem u oblaku, tijelima za HTTP odgovor ili memorijskim buferima:
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)")
Popravka za Windows kodiranje
Na Windows terminalima, sys.stdout Možda koristi legacy kodiranje koje se poklapa s Unicode znakovima. Dodajte ovo na početak skripta:
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
Što Biblioteka podupire
| Oznaka: | Podržani |
|---|---|
Čitaj. .one datoteke (put ili tok) | - Da, u redu. |
Izvadak RichText.Text (čisti tekst) | - Da, u redu. |
Inspekcija TextRun.Style (blatno, kurzivno, hiperlink, font) | - Da, u redu. |
| Izvaditi tekst iz stanica tabele | - Da, u redu. |
| Čitajte naslove stranica. | - Da, u redu. |
Pišite natrag na: .one | Ne, ne mogu. |
| Šifrirani dokumenti | Ne, ne mogu. |