OneNote Dosyalarından Metin Çıkarın Python Kullanarak
Microsoft OneNote’tan metin okumanız gerekiyorsa .one dosyaları bir Python betiğinde, Microsoft Office kurmadan veya Windows çalıştırmadan, Aspose.Note FOSS for Python çözümdür. OneNote ikili formatını doğrudan ayrıştıran ve temiz bir Python API’si sunan %100 ücretsiz, açık kaynaklı bir kütüphanedir.
Kurulum
pip install aspose-note
API anahtarı yok. Lisans dosyası yok. Microsoft Office yok.
En Basit Yaklaşım: GetChildNodes(RichText)
OneNote metni şu şekilde depolanır: RichText sayfalar, taslaklar ve taslak öğeleri arasında dağıtılmış düğümlerde. GetChildNodes(RichText) tüm belge ağacında özyinelemeli bir arama yapar ve her metin düğümünü düz bir liste olarak döndürür:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)
Bu, bir .one dosyadan tüm metin içeriğini almanın en hızlı yoludur.
Metni Bir Dosyaya Kaydet
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")
Sayfa Başına Metin Çıkar
Her metin bloğunun hangi sayfadan geldiğini bilmeniz gerektiğinde:
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)
Hiperlinkleri Çıkar
Köprüler bireysel TextRun nesneler içinde depolanır. RichText Kontrol edin 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}")
Biçimlendirmeyi Algıla: Kalın, İtalik, Altı Çizili
Her TextRun karakter başına biçimlendirmeyi kendi üzerinden taşır 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}")
Akıştan Oku
Bulut depolama, HTTP yanıt gövdeleri veya bellek içi tamponlarla çalışır:
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 Kodlama Düzeltmesi
Windows terminallerinde, sys.stdout Unicode karakterlerinde çökebilen eski bir kodlama kullanabilir. Betiğinizin başına şunu ekleyin:
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
Kütüphanenin Desteklediği
| Özellik | Destekleniyor |
|---|---|
Oku .one dosyalar (yol veya akış) | Evet |
Çıkar RichText.Text (düz metin) | Evet |
İncele TextRun.Style (kalın, italik, hiperbağlantı, yazı tipi) | Evet |
| Tablo hücrelerinden metni çıkar | Evet |
| Sayfa başlıklarını oku | Evet |
Geri yaz .one | Hayır |
| Şifreli belgeler | Hayır |