问题描述
我正在尝试从Word文件.docx的表中提取数据,并使用python将其转换为数据框。 注意:它是阿拉伯文字,所以我正在使用编码(“ utf-8”)
直到现在,我仍然可以获取.docx文件并获取表(具有13列),但是我无法显示文本。
我的代码中的错误在哪里?
代码:
import pandas as pd
import docx
document = docx.Document(path)
table = document.tables[0]
print(table)
data = []
for row in table.rows:
text = (row.cells[0].paragraphs[0].text.encode('utf-8'))
data.append(text)
print(data)
df = pd.DataFrame(data)
结果:
[b'']
[b'',b'']
[b'',b'',b'\xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa']
[b'',b'\xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa',b'\xd9\x81\xd8\xb1\xd8\xb9\xd8\xa7\xd9\x84\xd8\xaa\xd8\xad\xd9\x84\xd9\x8a\xd9\x84\xc2\xa0\n\n\n\n\n\n\n\n\n\n\n\n\n']
[b'',b'\xd9\x81\xd8\xb1\xd8\xb9\xd8\xa7\xd9\x84\xd8\xaa\xd8\xad\xd9\x84\xd9\x8a\xd9\x84\xc2\xa0\n\n\n\n\n\n\n\n\n\n\n\n\n',b'']
解决方法
首先,您应该删除.encode('utf-8')
,这就是为什么结果不可读的原因。
第二,您只访问每一行的第一列(row.cells[0]
)。
您需要添加另一个for loop
来浏览各列,如下所示:
for row_index,row in enumerate(table.rows):
data.append([])
for col_index in range(13): # Loop through columns
cell_text= row.cells[col_index].paragraphs[0].text
data[row_index].append(cell_text)