टेक्स्ट एक्सट्रैक्शन — Aspose.Note FOSS Python के लिए
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText नोड। प्रत्येक 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 चाइल्ड। नेस्टेड का उपयोग करें 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खोजता है पूरा tree जिसमें सभी पृष्ठ, outlines, और outline elements शामिल हैं। इसे किसी विशिष्ट पर कॉल करेंPageस्कोप को सीमित करने के लिए।.- हमेशा जाँचें
rt.Text(याif rt.Text:) प्रिंट करने से पहले, क्योंकि खालीRichTextनोड्स कुछ दस्तावेज़ों में मौजूद होते हैं।. - Windows पर, पुनः कॉन्फ़िगर करें
sys.stdoutUTF-8 पर ताकि बचा सकेंUnicodeEncodeErrorजब सिस्टम कोड पेज के बाहर के अक्षर प्रिंट किए जाते हैं।. TextRunकेवल हैTextऔरStyleफ़ील्ड्स। कोई नहीं हैStart/Endऑफ़सेट प्रॉपर्टीज़; पैरेंट के भीतर रन के टेक्स्ट को खोजने के लिएRichText.Text, खोजेंrun.Textके भीतरrt.Textहाथ से।.