חילוץ טקסט — Aspose.Note FOSS עבור Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText node. כל RichText מחזיק גם טקסט פשוט .Text מחרוזת ו .TextRuns רשימה של מעוצבים באופן אישי TextRun קטעים. דף זה מתעד כל תבנית זמינה לחילוץ טקסט.
הוצא את כל הטקסט הפשוט
הדרך המהירה ביותר לקבל את כל הטקסט ממסמך היא GetChildNodes(RichText), שמבצע מעבר רקורסיבי בעומק ראשון על פני כל ה‑DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)איסוף לרשימה וחיבור:
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
)חילוץ טקסט לכל עמוד
ארגן את הטקסט המוחלץ לפי כותרת העמוד:
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)בדיקת מקטעי עיצוב
RichText.TextRuns הוא רשימה של TextRun אובייקטים. כל ריצה מכסה טווח רציף של תווים עם אחידות 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
| מאפיין | סוג | תיאור |
|---|---|---|
IsBold | bool | טקסט מודגש |
IsItalic | bool | טקסט מוטה |
IsUnderline | bool | טקסט עם קו תחתי |
IsStrikethrough | bool | טקסט עם קו חוצה |
IsSuperscript | bool | כתב עילי |
IsSubscript | bool | כתב תחתי |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | האם ריצה זו היא קישור |
HyperlinkAddress | `str | None` |
חילוץ קישורים
קישורים נשמרים ב TextRun רמה. בדוק 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}")חילוץ טקסט מודגש ומסומן
סנן מקטעים לפי תכונות העיצוב כדי לבודד תוכן ספציפי:
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}")חילוץ טקסט מחסמי הכותרת
כותרות העמוד הן RichText צמתים בתוך ה Title אובייקט. הם אינם מוחזרים ברמת על GetChildNodes(RichText) בדף אלא אם אתה כולל את ה Title תת‑עץ. גש אליהם ישירות:
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)חילוץ טקסט מטבלאות
תאי טבלה מכילים RichText ילדים. השתמש ב‑nested GetChildNodes קריאות:
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)פעולות טקסט בזיכרון
החלפת טקסט
RichText.Replace(old_value, new_value) מחליף טקסט בזיכרון בכל ההרצות:
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 supportedהוספת רצף טקסט
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שמירת הטקסט המופק לקובץ
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.")טיפים
GetChildNodes(RichText)עלDocumentמחפש את שלם עץ כולל את כל העמודים, המתארים ואלמנטים של המתאר. קרא לו על ספציפיPageכדי להגביל את ההיקף.- תמיד לבדוק
rt.Text(אוif rt.Text:) לפני ההדפסה, כיוון ריקRichTextקיימים צמתים בחלק מהמסמכים. - ב-Windows, הגדר מחדש
sys.stdoutל-UTF-8 כדי למנועUnicodeEncodeErrorכאשר מדפיסים תווים מחוץ לדף הקוד של המערכת. TextRunיש רקTextוStyleשדות. איןStart/Endמאפייני היסט; כדי לאתר את הטקסט של ריצה בתוך ההורהRichText.Text, חפש אתrun.Textבתוךrt.Textבידנית.