Python segítségével szöveg kivonása a OneNote fájlokból

Ha szöveget kell olvasnia a Microsoft OneNote-ból .one Python-szkriptben lévő fájlok, a Microsoft Office telepítése vagy Windows futtatása nélkül;, Aspose.Note FOSS for Python Ez egy 100%-os ingyenes, nyílt forráskódú könyvtár, amely közvetlenül elemzi a OneNote bináris formátumot és kitüntet egy tiszta Python API-t.

Beépítés

pip install aspose-note

Nincs API kulcs, nincs licencfájl, nem van Microsoft Office.


A legegyszerűbb megközelítés: GetChildNodes(RichText)

A OneNote szöveg tárolása a RichText A weboldalak, a körvonalak és az elemek között elosztott csomópontok. GetChildNodes(RichText) rekurzív keresést végez az egész dokumentumfa esetében, és minden szövegcsomót egyenes listaként adja 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ódja annak, hogy az összes szöveg tartalmát ki egy .one - Az aktát.


A szöveget egy fájlba menteni

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

A szöveg kivonása oldalonként

Ha tudni akarod, hogy melyik oldaltól származik a szövegblokkok:

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)

Kiválasztás hiperlinkek

A hiperlinkek az egyes weboldalakon tárolódnak. TextRun objektumok a RichText A csúcsok. 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}")

A formázás felismerése: Bold, kursiv és aláhúzás.

Mindenki. TextRun formátumban tartja a karakterekhez képest. 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}")

Olvasni egy folyóból.

Dolgozik felhő tárolóval, HTTP-válasz testekkel vagy memóriában lévő pufferrel:

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ás javítása

Windows terminálokon, sys.stdout A kódok egy régi kódolást használhatnak, amely az Unicode karakterekhez kapcsolódik. Adja hozzá a betűje kezdetén:

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

Mit támogat a könyvtár?

A tulajdonságokTámogatott
Olvasd! .one fájlok (útvonal vagy áramlás)Igen, igen. - Az is jó.
Készítmény RichText.Text (tiszta szöveg)Igen, igen. - Az is jó.
Ellenőrzés TextRun.Style (kövér, kursiv, hiperlink, betűtípus)Igen, igen. - Az is jó.
A táblázat sejtjeiből származó szöveg kivonásaIgen, igen. - Az is jó.
Olvasd el a címet!Igen, igen. - Az is jó.
Írj vissza a… .oneNem, nem.
Titkosított dokumentumokNem, nem.

Következő lépések