背景: 最近在处理一批中文数据。这些数据格式不一,有使用word的,有使用excel的,也有使用json等的。这篇主要记录下使用python来处理word和excel。
一. 使用python处理excel
-
读取excel数据
(打开excel,通过索引获取指定的sheet内容)
data = xlrd.open_workbook(fileName) #打开excel
table = data.sheet_by_index(0)#获取sheet,主要通过索引获取(默认从0开始)
- 往excel写数据
(利用pandas的DataFrame)这里我主要是要处理原始excel的某一列,然后再把生成的内容追加到最后一列。
def dealExcel(fileName, fileResult):
data = xlrd.open_workbook(fileName) #打开excel
table = data.sheet_by_index(0)#获取sheet,主要通过索引获取(默认从0开始)
dataToWrite = []
for rowIndex in range(1, table.nrows):#过滤掉表头
line = table.row_values(rowIndex)#获取指定行的内容
# 中间具体细节省略, 假设生成的内容为appendContent
line.append(appendContent)
dataToWrite.append(line)
columns = table.row_values(0)
columns.append("xxx")
dt = pd.DataFrame(dataToWrite, columns=columns)#将数据转换成dataFrame格式
dt.to_excel(fileResult, index=0)#直接写入excel文件(xlsx格式)
二. 利用python处理word文档
- 读取word内容
doc = docx.Document(fileInput)#获取输入文档
lenDoc = len(doc.paragraphs)
print("总共%s个段落" % lenDoc)
- 往word中写内容
def filterWords(fileInput, fileResult):
doc = docx.Document(fileInput)#获取输入文档
lenDoc = len(doc.paragraphs)
print("总共%s个段落" % lenDoc)
resultFile = docx.Document()#结果文件
count = 0
for i in range(1, lenDoc):
paraSingle = doc.paragraphs[i].text.strip()#读取段落数据
# 中间具体过程省略,假设经过处理后的输出为paraSingle
resultFile.add_paragraph(paraSingle)#添加段落
resultFile.save(fileResult)#保存文件
- 安装docx
pip3 install docx
or
pip3 install docx --user
若使用时出现错误: MoudleNotFoundError: No moudle named ‘expections’
那么先卸载docx
pip3 uninstall docx
然后找一个兼容的包下载于本地再进行安装:(参考:python安装docx模块出现Import Error: No module named 'exceptions’的解决方案)
pip3 install python_docx-0.8.10-py2.py3-none-any.whl
or
pip3 install python_docx-0.8.10-py2.py3-none-any.whl --user