Metin Çıkarma — Aspose.Note FOSS for Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText node. Her RichText hem düz metin .Text dize ve bir .TextRuns bireysel olarak stillendirilmiş bir liste TextRun segmentler. Bu sayfa, mevcut tüm metin çıkarma desenlerini belgelendirir.
Tüm Düz Metni Çıkar
Bir belgeden tüm metni almanın en hızlı yolu GetChildNodes(RichText), ki tüm DOM üzerinde özyinelemeli derinlik öncelikli bir geçiş gerçekleştirir:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Bir listeye topla ve birleştir:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
all_text = "\n".join(
rt.Text for rt in doc.GetChildNodes(RichText) if rt.Text
)Sayfa Başına Metin Çıkar
Çıkarılan metni sayfa başlığına göre düzenle:
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)"
)
print(f"\n=== {title} ===")
for rt in page.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Biçimlendirme Çalışmalarını İncele
RichText.TextRuns bir listedir TextRun nesneler. Her çalıştırma, tutarlı bir TextStyle:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
style = run.Style
parts = []
if style.IsBold: parts.append("bold")
if style.IsItalic: parts.append("italic")
if style.IsUnderline: parts.append("underline")
if style.IsStrikethrough: parts.append("strikethrough")
if style.IsSuperscript: parts.append("superscript")
if style.IsSubscript: parts.append("subscript")
if style.FontName: parts.append(f"font={style.FontName!r}")
if style.FontSize: parts.append(f"size={style.FontSize}pt")
label = ", ".join(parts) if parts else "plain"
print(f"[{label}] {run.Text!r}")TextStyle Özellik Referansı
| Özellik | Tür | Açıklama |
|---|---|---|
IsBold | bool | Kalın metin |
IsItalic | bool | İtalik metin |
IsUnderline | bool | Altı çizili metin |
IsStrikethrough | bool | Üstü çizili metin |
IsSuperscript | bool | Üst simge |
IsSubscript | bool | Alt simge |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Bu çalışmanın bir köprü olup olmadığı |
HyperlinkAddress | `str | None` |
Köprüleri Çıkar
Köprüler şurada depolanır TextRun seviye. Kontrol et 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:40s} -> {run.Style.HyperlinkAddress}")Kalın ve Vurgulanan Metni Çıkar
Belirli içeriği izole etmek için çalışmaları biçimlendirme özelliklerine göre filtrele:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
print("=== Bold segments ===")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.IsBold and run.Text.strip():
print(f" {run.Text.strip()!r}")
print("\n=== Highlighted segments ===")
for rt in doc.GetChildNodes(RichText):
for run in rt.TextRuns:
if run.Style.Highlight is not None and run.Text.strip():
color = f"#{run.Style.Highlight & 0xFFFFFF:06X}"
print(f" [{color}] {run.Text.strip()!r}")Başlık Bloklarından Metin Çıkar
Sayfa başlıkları RichText içindeki düğümler Title nesne. Bunlar üst düzey bir GetChildNodes(RichText) sayfada, ancak dahil etmezseniz Title alt ağaç. Onlara doğrudan erişin:
from aspose.note import Document, Page
doc = Document("MyNotes.one")
for page in doc.GetChildNodes(Page):
if page.Title:
if page.Title.TitleText:
print("Title text:", page.Title.TitleText.Text)
if page.Title.TitleDate:
print("Title date:", page.Title.TitleDate.Text)
if page.Title.TitleTime:
print("Title time:", page.Title.TitleTime.Text)Tablolardan Metin Çıkar
Tablo hücreleri içerir RichText çocukları. İç içe kullanın GetChildNodes çağrılar:
from aspose.note import Document, Table, TableRow, TableCell, RichText
doc = Document("MyNotes.one")
for table in doc.GetChildNodes(Table):
for row in table.GetChildNodes(TableRow):
row_values = []
for cell in row.GetChildNodes(TableCell):
cell_text = " ".join(
rt.Text for rt in cell.GetChildNodes(RichText)
).strip()
row_values.append(cell_text)
print(row_values)Bellek İçi Metin İşlemleri
Metni değiştir
RichText.Replace(old_value, new_value) tüm çalıştırmalarda bellek içinde metni değiştirir:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
rt.Replace("TODO", "DONE")
##Changes are in-memory only; saving back to .one is not supportedBir metin run’ı ekle
from aspose.note import Document, RichText, TextStyle
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
rt.Append(" [reviewed]") # appends with default style
break # just the first node in this exampleÇıkarılan Metni Dosyaya Kaydet
import sys
from aspose.note import Document, RichText
if hasattr(sys.stdout, "reconfigure"):
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
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"Extracted {len(lines)} text blocks.")İpuçları
GetChildNodes(RichText)birDocumentarıyor tüm tüm sayfaları, anahatları ve anahat öğelerini içeren ağaç. Belirli birPagekapsamı sınırlamak için.- Her zaman kontrol edin
rt.Text(veyaif rt.Text:)RichTextdüğümler bazı belgelerde bulunur. - Windows’ta, yeniden yapılandırın
sys.stdoutUTF-8’e, önlemek içinUnicodeEncodeErrorsistem kod sayfasının dışındaki karakterleri yazdırırken. TextRunsadeceTextveStylealanlar. YokStart/Endofset özellikleri; bir çalıştırmanın metnini üst öğe içinde bulmak içinRichText.Text,run.Textiçindert.Textmanuel olarak.