Я разрабатываю приложение для моего офиса дяди. В файле документа Word содержится список всех сеансов (более 3 тыс. Сеансов = 465 страниц).
При извлечении возникла проблема. место суда как-то дублируется в базе данных. например: -
некоторые экземпляры дублируются дважды, некоторые - без дублирования, а некоторые переходят в 4 дублированных экземпляра. Как я могу получить красный из этого дублированного текста в SQL или Python. Я не могу поделиться исходным файлом, потому что он конфиденциальный.
Мой метод извлечения:
1- Преобразование Word в XML.
2- Использование Python для извлечения данных изтаблица.
3 - отправьте ее в базу данных.
from xml.dom import minidom
def extract(file_name):
dic = []
xmldoc = minidom.parse(file_name) # load the files
# get all rows from the table
itemlist = xmldoc.getElementsByTagName('w:tr')
# loop through all the rows
for item in itemlist:
# get columns in the row
columns = item.getElementsByTagName('w:tc')
ob = {}
col_index = -1
# coloum of a row
for column in columns:
#get text from the columnt
# expected one object or a list
data = column.getElementsByTagName('w:r')
col_index += 1
#if it's empty, just ignore
if(len(data) == 0):
ob[col_index] = "-"
else:
# sometimes the text in the cell has multiple lines,
# so we have to add all the text inside the box
val = ""
for d in data :
try:
text = data[0].getElementsByTagName('w:t')
val += text[0].firstChild.nodeValue
except:
val = "-"
ob[col_index] = (val).encode('utf-8')
dic.append(ob) # append to the list
return dic
def extractasCSV(file_name):
dic = extract(file_name=file_name)
full = ""
for item in dic :
str = ""
for i in range(1,7):
str += item[i] + ", "
full += str + "\n"
return full
Примечание. Я делаю добавление для каждого w: t : иногда каждая ячейка имеетнесколько строк, поэтому мне нужна вся информация там