Mengekstrak Teks dari OneNote File menggunakan Python
Jika Anda perlu membaca teks dari Microsoft OneNote .one file dalam skrip Python, tanpa menginstal Microsoft Office atau menjalankan Windows, Aspose.Note FOSS for Python adalah solusi. Ini 100% gratis, open-source library yang menguraikan format biner OneNote secara langsung dan mengekspos API Python bersih.
Instal (Membuat)
pip install aspose-noteTidak ada kunci API, tidak ada file lisensi, tak ada Microsoft Office.
Pendekatan yang paling sederhana: GetChildNodes(RichText)
Teks OneNote disimpan di RichText node yang didistribusikan di seluruh halaman, garis besar dan elemen garis. GetChildNodes(RichText) melakukan pencarian rekursif dari seluruh pohon dokumen dan mengembalikan setiap node teks sebagai daftar datar:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)
Ini adalah cara tercepat untuk mendapatkan semua teks dari sebuah .one File. - Apa?.
Simpan Teks ke File
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")
Ekstrak Teks Per Halaman
Ketika Anda perlu tahu halaman mana setiap blok teks berasal dari:
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)
Ekstrak Hyperlink
Hyperlink disimpan pada individu TextRun objek dalam RichText Periksa. 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}")
Mengidentifikasi Format: Bold, Kursi, Underneath
Setiap TextRun membawa per-karakter pemformatan melalui 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}")
Baca dari Sungai
Bekerja dengan penyimpanan awan, tubuh respons HTTP, atau buffer dalam memori:
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)")
Memperbaiki Pengkodean Windows
Pada terminal Windows, sys.stdout mungkin menggunakan pengkodean lama yang crash pada karakter Unicode. Tambahkan ini di awal skrip Anda:
import sys
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
Apa yang Didakwa Biblioteka?
| Fiturnya | Didukung |
|---|---|
Bacalah. .one file (jalan atau aliran) | Ya, aku tahu. |
Ekstrak RichText.Text (teks sederhana) | Ya, aku tahu. |
Pemeriksaan TextRun.Style (Tulis tebal, kursif, hyperlink, font) | Ya, aku tahu. |
| Ekstrak teks dari sel tabel | Ya, aku tahu. |
| Baca judul halaman | Ya, aku tahu. |
Tulis kembali ke: .one | Tidak ada. |
| Dokumen terenkripsi | Tidak ada. |