Extração de texto Aspose.Note FOSS para Python
Aspose.Note FOSS for Python exposes the full text content of every OneNote page through the RichText Cada nó. RichText contém ambos um texto simples .Text cordas e um .TextRuns Lista de modelos individuais TextRun Esta página documenta todos os padrões de extração de texto disponíveis.
Extrair todos os textos simples
Utilização: GetChildNodes(RichText) Para recolher todos os RichText Nodos num único recorrente profundidade-primeiro atravessamento em todo o documento DOM:
from aspose.note import Document, RichText
doc = Document("MyNotes.one")
for rt in doc.GetChildNodes(RichText):
if rt.Text:
print(rt.Text)Faça uma lista e junte-se:
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
)Extrair texto por página
Iterar páginas com: GetChildNodes(Page) E chama-me. GetChildNodes(RichText) em cada página para organizar o texto extraído por título de página:
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)Inspecionar executar formatação
RichText.TextRuns é uma lista de: TextRun Cada execução cobre uma gama contínua de caracteres com um uniforme. 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 Property Reference (Referência de propriedade do estilo)
| Propriedade | Tipo de veículo: | Descrição: |
|---|---|---|
IsBold | bool | Texto em negrito |
IsItalic | bool | Texto em itálico |
IsUnderline | bool | Textos sublinhados |
IsStrikethrough | bool | Passagem pelo texto |
IsSuperscript | bool | Superscrição |
IsSubscript | bool | Subscrição |
FontName | `str | None` |
FontSize | `float | None` |
FontColor | `int | None` |
Highlight | `int | None` |
Language | `int | None` |
IsHyperlink | bool | Se esta execução é um hiperlink |
HyperlinkAddress | `str | None` |
Extrair hiperlinks
Os hiperlinks são armazenados no sítio Web da Comissão. TextRun nível dentro de cada um dos RichText Verifique o nó. Style.IsHyperlink booleano e leitura Style.HyperlinkAddress para obter a URL:
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}")Extrair texto em negrito e destacado
O filtro é executado por formatação de propriedades para isolar conteúdo específico. Verifique IsBold para segmentos negritos e Highlight para um não-None valor para encontrar texto destacado:
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}")Extrair texto dos blocos de título
Os títulos das páginas são: RichText Nodos dentro do sistema de Title Objeto. Eles não são devolvidos por um nível superior de dados, mas sim pelo objeto. GetChildNodes(RichText) na página, a menos que inclua o Title Acesse-os diretamente:
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)Extrair texto de tabelas
As células da tabela contêm: RichText crianças. GetChildNodes chamadas a Table, TableRow, e TableCell para recolher o texto de cada célula em cada linha:
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)Operações de texto na memória
Substituição de texto
Chama-me . RichText.Replace(old_value, new_value) para substituir texto em memória em todos os TextRun segmentos sem modificar o ficheiro de origem:
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 supportedAnexar uma execução de texto
Chama-me . RichText.Append(text) para adicionar um novo segmento de texto com o estilo padrão ao final de uma página existente. RichText Nodo na memória:
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 exampleSalvar texto extraído para arquivo
Recolher tudo . RichText cadeias de texto do documento e escrever-los para um arquivo UTF-8 usando o padrão open() - Sim, sim. Chama:
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.")Dicas de trabalho
GetChildNodes(RichText)em umDocumentProcura o inteiro árvore incluindo todas as páginas, contornos e elementos de contorno. Chame-o em um específicoPagepara limitar o âmbito.- Verifica sempre .
rt.Text(ouif rt.Text:) antes da impressão, como vazio.RichTextOs nós existem em alguns documentos. - No Windows, reconfigure
sys.stdoutpara UTF-8 para evitarUnicodeEncodeErrorquando imprimir caracteres fora da página de código do sistema. TextRuntem apenas:Texte a)StyleA Comissão não tem qualquer dúvida.Start/Endpropriedades de offset; para localizar o texto de uma execução dentro do paiRichText.Text, busca porrun.Textno âmbito de:rt.Textmanualmente.