Izgūt tekstu no OneNote failiem, izmantojot Python

Ja jums ir jālasa teksts no Microsoft OneNote .one failus Python skriptā, neinstalējot Microsoft Office vai darbinot Windows, Aspose.Note FOSS for Python ir risinājums. Tā ir 100 % bezmaksas, atvērtā koda bibliotēka, kas tieši parsē OneNote bināro formātu un nodrošina tīru Python API.

Instalēt

pip install aspose-note

Nav API atslēgas. Nav licences faila. Nav Microsoft Office.


Visvienkāršākais veids: GetChildNodes(RichText)

OneNote teksts tiek glabāts RichText mezgli, kas izplatīti pāri lapām, struktūrām un struktūru elementiem. GetChildNodes(RichText) veic rekursīvu meklēšanu visā dokumenta koks un atgriež katru teksta mezglu kā plakanu sarakstu:

from aspose.note import Document, RichText

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

Šī ir ātrākā veida, kā iegūt visu teksta saturu no .one faila.


Saglabāt tekstu 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")

Izgūt tekstu pa lapām

Kad jums jāzina, no kuras lapas nācis katrs teksta bloks:

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)

Izgūt hipersaites

Hipersaites tiek glabātas uz atsevišķiem TextRun objektiem iekš RichText mezgli. Pārbaudiet 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}")

Noteikt formatējumu: treknraksts, slīpraksts, pasvītrojums

Katrs TextRun nesniedz per‑rakstzīmju formatēšanu caur savu 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}")

Lasīt no straumes

Darbojas ar mākoņa glabātuvi, HTTP atbildes ķermeņiem vai atmiņā esošiem buferiem:

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 kodējuma labojums

Uz Windows termināliem, sys.stdout var izmantot mantoto kodējumu, kas avarē, ja tiek izmantotas Unicode rakstzīmes. Pievienojiet šo jūsu skripta sākumā:

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

Ko bibliotēka atbalsta

ĪpašībaAtbalstīts
Lasīt .one faili (ceļš vai plūsma)
Izvilkt RichText.Text (vienkāršs teksts)
Pārbaudīt TextRun.Style (treknraksts, slīpraksts, hipersaite, fonts)
Izvilkt tekstu no tabulas šūnām
Lasīt lapas nosaukumus
Rakstīt atpakaļ uz .one
Šifrēti dokumenti

Nākamie soļi