Вы можете использовать фрагмент кода ниже, чтобы разобрать документ в виде списка, где каждая строка представляет собой словарь, отображающая значение заголовка таблицы на значение столбца.
from docx.api import Document
# Load the first table from your document. In your example file,
# there is only one table, so I just grab the first one.
document = Document('Books.docx')
table = document.tables[0]
# Data will be a list of rows represented as dictionaries
# containing each row's data.
data = []
keys = None
for i, row in enumerate(table.rows):
text = (cell.text for cell in row.cells)
# Establish the mapping based on the first row
# headers; these will become the keys of our dictionary
if i == 0:
keys = tuple(text)
continue
# Construct a dictionary for this row, mapping
# keys to values for this row
row_data = dict(zip(keys, text))
data.append(row_data)
Это даст вам:
data = [
{u'Pub.': u'Penguin Books',
u'Auther': u'Edward de BONO',
u'Sr. No.': u'1',
u'Name of Book': u'Six Thinking Hats'
},
...
]
Если вы просто хотите кортеж для каждой строки, вы должны вместо создания словаря просто установить row_data
до значения кортежа text
, так что в цикл вместо построения dict
, сделайте следующее:
# Construct a tuple for this row
row_data = tuple(text)
data.append(row_data)
Теперь data
будет держать что-то вроде этого, вместо:
data = [
(u'1',
u'Six Thinking Hats',
u'Edward de BONO',
u'Penguin Books'
),
...
]
Тогда вы можете пропустить построения keys
, очевидно, (но все же пропустить первый ряд!).
Почтовый код и соответствующие материалы здесь, а не на некоторых сайтах сторонних организаций, и особенно не с некоторым сокращенным URL-адресом на неизвестном веб-сайте. – CoryKramer
Я пробовал много способов разобрать его, но не получил ничего, чтобы работать - так что не вставил код. Я не думаю, что это полезно, если код не работает – Sreedhar
@Cyber Я приложил файл docx в этой ссылке - ничего, кроме этого – Sreedhar