我有一个Word文档,我想从段落的开头和/或结尾删除括号及其各自的内容。问题是:
我有一个函数可以检查文档段落是否以数字开头,后跟 ) 或字母开头,后跟 ) 我还尝试编写一个排除括号的代码,但没有成功。 这是我的代码:
textos_encontrados = []
paragrafos_originais = []
paragrafos_com_padrao = []
paragrafos_sem_padrao = []
estilos_de_paragrafo = ['List', 'List Paragraph', 'paragraph', 'Normal']
lista_range_numeros_letras = [str(c) for c in range(2000)] + [chr(ord('a') + i) for i in range(26)]
lista_de_simbolos = [')', '.', 'º', '-', 'ª']
lista_range_de_simbolos = [str(simbolo) for simbolo in lista_de_simbolos]
indice_numeros = 0
primeiro_numero = lista_range_numeros_letras[0]
def verifica_sequencia(paragrafo):
texto = paragrafo.text
indice = 0
sequencia = []
while indice < len(texto):
if texto[indice] in lista_range_numeros_letras:
sequencia.append(texto[indice])
indice += 1
else:
break
if sequencia:
for simbolo in lista_de_simbolos:
if indice < len(texto) and texto[indice] == simbolo:
print("Sequência:", "".join(sequencia))
print(f"Próximo elemento é um símbolo: {simbolo}")
texto_encontrado = texto.strip()
textos_encontrados.append(texto_encontrado)
paragrafos_sem_padrao.append(paragrafo.text)
print("PARAGRAFOS SEM PADRAO", paragrafos_com_padrao)
break
for paragrafo in document.paragraphs:
verifica_sequencia(paragrafo)
texto = paragrafo.text
if paragrafo.style.name in estilos_de_paragrafo:
texto_encontrado = texto.strip()
textos_encontrados.append(texto_encontrado)
paragrafos_com_padrao.append(paragrafo.text)
print("PARAGRAFOS COM ESTILO:", paragrafos_com_padrao)
print("TEXTOS ENCONTRADOS", textos_encontrados)
def remove_text_inside_brackets(text, brackets="()[]"):
count = [0] * (len(brackets) // 2) # count open/close brackets
saved_chars = []
for character in paragrafos_com_padrao:
for i, b in enumerate(brackets):
if character == b: # found bracket
kind, is_close = divmod(i, 2)
count[kind] += (-1) ** is_close # `+1`: open, `-1`: close
if count[kind] < 0: # unbalanced bracket
count[kind] = 0 # keep it
else: # found bracket to remove
break
else: # character is not a [balanced] bracket
if not any(count): # outside brackets
saved_chars.append(character)
return ''.join(saved_chars)
您似乎正在尝试从 Word 文档的段落开头和结尾删除括号中的文本或其他指定字符,同时保留特定样式。您现有的代码有一些问题,我将提供修订版本和解释。
首先,让我们创建一个函数来删除括号内的文本(包括圆括号):
def remove_text_inside_brackets(text, brackets="()"):
count = 0
saved_chars = []
for char in text:
if char == brackets[0]:
count += 1
elif char == brackets[1]:
count -= 1
elif count == 0:
saved_chars.append(char)
return ''.join(saved_chars)
现在,您可以在主代码中使用此函数:
from docx import Document
# Load your Word document
document = Document("your_document.docx")
textos_encontrados = []
paragrafos_com_padrao = []
estilos_de_paragrafo = ['List', 'List Paragraph', 'paragraph', 'Normal']
for paragrafo in document.paragraphs:
texto = paragrafo.text
if paragrafo.style.name in estilos_de_paragrafo:
# Remove text inside parentheses at the beginning and end
texto_sem_parenteses = remove_text_inside_brackets(texto)
textos_encontrados.append(texto_sem_parenteses)
paragrafos_com_padrao.append(paragrafo.text)
# Now, `textos_encontrados` contains the modified paragraphs with parentheses removed.
# You can save them to a new Word document if needed.
此代码将迭代 Word 文档中的段落,对于样式与
estilos_de_paragrafo
中的样式匹配的段落,它将删除括号内的文本并将修改的段落存储在 textos_encontrados
列表中。然后您可以根据需要保存这些修改过的段落。