如何使用Python读取Azure Blob中的docx文件?解决乱码问题
解决Azure Blob中DOCX文件读取乱码问题
问题原因
DOCX不是纯文本格式,本质是ZIP压缩的二进制文件,直接用utf-8解码二进制内容必然出现不可读字符;而TXT是纯文本格式,所以你的代码处理TXT正常。
解决方案
需要先获取文件的二进制内容,再用专门的DOCX解析库提取文本,推荐使用python-docx库。
步骤1:安装依赖库
pip install python-docx
步骤2:修改代码读取DOCX内容
from docx import Document from io import BytesIO from azure.storage.blob import BlobServiceClient # 初始化Blob服务客户端 blob_service_client_instance = BlobServiceClient(account_url=STORAGEACCOUNTURL, credential=STORAGEACCOUNTKEY) blob_client_instance = blob_service_client_instance.get_blob_client(container_name, blob_name, snapshot=None) # 下载二进制内容到BytesIO对象 blob_download = blob_client_instance.download_blob() blob_content = blob_download.readall() docx_file = BytesIO(blob_content) # 解析DOCX并提取文本 doc = Document(docx_file) full_text = [] for para in doc.paragraphs: full_text.append(para.text) docx_content = '\n'.join(full_text) print(docx_content)
说明
BytesIO用来将二进制内容模拟成文件对象,满足python-docx的读取要求- 通过遍历文档段落提取文本,可完整获取DOCX中的纯文本内容
内容的提问来源于stack exchange,提问作者Satish Barnala
相关产品推荐
相关产品推荐

