Poimi teksti OneNote-tiedostoista käyttäen Python

Jos sinun täytyy lukea tekstiä Microsoft OneNotesta .one tiedostoja Python-skriptissä, asentamatta Microsoft Officea tai ajamatta Windowsia, Aspose.Note FOSS for Python on ratkaisu. Se on 100 % ilmainen, avoimen lähdekoodin kirjasto, joka jäsentää OneNote-binäärimuodon suoraan ja tarjoaa puhtaan Python-API:n.

Asenna

pip install aspose-note

Ei API-avainta. Ei lisenssitiedostoa. Ei Microsoft Officea.


Yksinkertaisin tapa: GetChildNodes(RichText)

OneNote-teksti tallennetaan RichText solmuihin, jotka jakautuvat sivujen, sisällysluetteloiden ja sisällysluettelon elementtien välillä. GetChildNodes(RichText) suorittaa rekursiivisen haun koko asiakirjapuun läpi ja palauttaa jokaisen tekstisolmun litteänä listana:

from aspose.note import Document, RichText

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

Tämä on nopein tapa saada kaikki tekstisisältö yhdestä .one tiedostosta.


Tallenna teksti tiedostoon

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

Poimi teksti sivukohtaisesti

Kun sinun täytyy tietää, miltä sivulta kukin tekstilohko on peräisin:

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)

Poimi hyperlinkit

Hyperlinkit tallennetaan yksittäisiin TextRun objekteihin sisällä RichText solmut. Tarkista 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}")

Havaitse muotoilu: Lihavointi, kursiivi, alleviivaus

Jokainen TextRun kantaa per-merkki muotoilua sen kautta 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}")

Lue suorasta

Toimii pilvitallennuksen, HTTP-vastausrunkojen tai muistissa olevien puskurien kanssa:

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-merkistökorjaus

Windows-terminaaleissa, sys.stdout voi käyttää vanhaa koodausta, joka kaatuu Unicode-merkkejä käsitellessä. Lisää tämä skriptisi alkuun:

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

Mitä kirjasto tukee

OminaisuusTuettu
Lue .one tiedostot (polku tai virta)Kyllä
Poimi RichText.Text (pelkkä teksti)Kyllä
Tarkastele TextRun.Style (lihavoitu, kursiivi, hyperlinkki, fontti)Kyllä
Poimi teksti taulukon soluistaKyllä
Lue sivun otsikotKyllä
Kirjoita takaisin kohteeseen .oneEi
Salatut asiakirjatEi

Seuraavat askeleet