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šība | Atbalstīts |
|---|---|
Lasīt .one faili (ceļš vai plūsma) | Jā |
Izvilkt RichText.Text (vienkāršs teksts) | Jā |
Pārbaudīt TextRun.Style (treknraksts, slīpraksts, hipersaite, fonts) | Jā |
| Izvilkt tekstu no tabulas šūnām | Jā |
| Lasīt lapas nosaukumus | Jā |
Rakstīt atpakaļ uz .one | Nē |
| Šifrēti dokumenti | Nē |