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
| Ominaisuus | Tuettu |
|---|---|
Lue .one tiedostot (polku tai virta) | Kyllä |
Poimi RichText.Text (pelkkä teksti) | Kyllä |
Tarkastele TextRun.Style (lihavoitu, kursiivi, hyperlinkki, fontti) | Kyllä |
| Poimi teksti taulukon soluista | Kyllä |
| Lue sivun otsikot | Kyllä |
Kirjoita takaisin kohteeseen .one | Ei |
| Salatut asiakirjat | Ei |