本文正在参与「金石计划 . 分割6万现金大奖」
前言
今天有友友问起来,怎么对 Excel 进行操作,对里边的内容进行错别字批改,那接下来由博主来为各位读者细细解说一番;
首先想到的是用 xlrd
去读取 Excel 里边的内容,不过呢,最新版的 xlrd
现已不支撑 .xlsx
了,运用 xlrd
读取 .xlsx
文件时,会报错:XLRDError: Excel xlsx file; not supported
,因而,接下来将运用 pandas
来完结系列操作;
分析
1、首先,导入 pandas
的包:
import pandas as pd
2、读入相关 Excel 的数据,调查一下大致情况:
data = pd.read_excel("1.xlsx")
data
3、然后看一下列标题:
data.columns
Index(['Unnamed: 0', 'context', 'role_id', 'resource', '错别字_paddle', '错标点_paddle'],
dtype='object')
4、由于需求是只需求对 context
中的错别字进行批改,因而,只需求关注到两列 context
和 错别字_paddle
就行,先看看 错别字_paddle
的情况:
data['错别字_paddle']
能够看到,从 pandas
导入处理之后,没有数据的值被显现为 NaN
,而有数据值的照常显现,比如 [{'position': 18, 'correction': {'的': '地'}}]
,那接下来怎么处理的思路就非常明晰了;
对于不需求批改的语句,也便是 错别字_paddle
这列值为 NaN
的,直接将原句挪回去就行了,因而只需求一个判别条件和 NaN
比较为真就行了,这儿的话办法有多种,比较直接的便是运用 pandas
自带的函数 isna()
:
pd.isna(data.loc[index].values[4])
-
当值为
NaN
时 -
当值不为
NaN
时
当然也能够先经过 type()
函数得知该字段类型为 float
,但这儿有一个坑,直接用 float('nan')
进行判别回来的会是 False
,不过能够借助 hash()
函数来进行判别:
hash(float('NaN')) == hash(NaN)
看实践场景进行选择即可;
对于要批改的语句,不难发现,类似 [{'position': 18, 'correction': {'的': '地'}}]
的值的类型为 str
,因而咱们需求进行一个转换,最快捷的方式便是运用 eval()
函数,不过 eval()
这个函数需求稳重运用,由于存在一定的安全隐患,这儿不对外公开的话就不用太考虑这事儿;
将 [{'position': 18, 'correction': {'的': '地'}}]
赋给 v
,其类型为 str
,经过 eval()
函数就能够得到类型为 list[dic, ... , dic]
的变量 lst
,然后按部就班取出其间的值就行:
v = "[{'position': 18, 'correction': {'的': '地'}}]"
lst = eval(v)
print(lst[0]['position'], lst[0]['correction'])
最终便是依照 position
更改字符就行了;
5、完结字符批改之后,咱们需求将其导出成 Excel
,那么仍是借助 pandas
,依照其规则导出就行了;
6、整体结构如下所示:
import pandas as pd
data = pd.read_excel("1.xlsx")
fix = []
for index in data.index:
values = data.loc[index].values
if pd.isna(values[4]):
fix.append(values[1])
continue
lst = eval(values[4])
str = list(values[1])
for it in lst:
str[it['position']] = list(it['correction'].values())[0]
fix.append(''.join(str))
dic = {"fixed" : fix}
writer = pd.ExcelWriter("fix.xlsx")
data = pd.DataFrame(dic)
data.to_excel(writer, sheet_name="sheet1")
writer.save()
跋文
以上便是 pandas 处理 Excel 中错别字批改 的全部内容了,解说了怎么经过 pandas
工具包来操作 Excel
,结合实践场景,具体问题具体分析,图文并茂,细致的解说了操作过程以及其间需求注意的细节,期望大家有所收成!
上篇精讲:【PY】Python3 字节码混杂
我是,等待你的关注;
创造不易,请多多支撑;
系列专栏:PY