Uttrekk tekst fra OneNote-filer ved hjelp av Python

Hvis du trenger å lese tekst fra Microsoft OneNote .one filer i et Python skript, uten å installere Microsoft Office eller kjøre Windows, Aspose.Note FOSS for Python er løsningen. Det er et 100 % gratis, åpen kildekode‑bibliotek som parser OneNote‑binærformatet direkte og eksponerer et rent Python-API.

Installer

pip install aspose-note

Ingen API-nøkkel. Ingen lisensfil. Ingen Microsoft Office.


Den enkleste tilnærmingen: GetChildNodes(RichText)

OneNote‑tekst lagres i RichText noder fordelt over sider, disposisjoner og disposisjonselementer. GetChildNodes(RichText) utfører et rekursivt søk i hele dokumenttreet og returnerer hver tekstnode som en flat liste:

from aspose.note import Document, RichText

doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
    if rt.Text:
        print(rt.Text)

Dette er den raskeste måten å hente all tekstinnhold fra en .one fil.


Lagre tekst til en fil

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")

Uttrekk tekst per side

Når du trenger å vite hvilken side hver tekstblokk kom fra:

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)

Uttrekk hyperlenker

Hyperlenker lagres på individuelle TextRun objekter innenfor RichText Sjekk 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}")

Oppdag formatering: Fet, Kursiv, Understreket

Hver TextRun bærer per-tegn formatering gjennom sin 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}")

Les fra en strøm

Fungerer med skylagring, HTTP-responskropper eller minnebuffere:

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-kodingsretting

På Windows‑terminaler, sys.stdout kan bruke en eldre koding som krasjer på Unicode‑tegn. Legg dette til i starten av skriptet ditt:

import sys
if hasattr(sys.stdout, "reconfigure"):
    sys.stdout.reconfigure(encoding="utf-8", errors="replace")

Hva biblioteket støtter

FunksjonStøttet
Lese .one filer (sti eller strøm)Ja
Ekstraher RichText.Text (ren tekst)Ja
Inspiser TextRun.Style (fet, kursiv, hyperkobling, skrifttype)Ja
Ekstraher tekst fra tabellcellerJa
Les sidetitlerJa
Skriv tilbake til .oneNei
Krypterte dokumenterNei

Neste steg