本文正在参与「金石计划 . 分割6万现金大奖」

前言

今天有友友问起来,怎么对 Excel 进行操作,对里边的内容进行错别字批改,那接下来由博主来为各位读者细细解说一番;

【PY】pandas 处理 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

【PY】pandas 处理 Excel 中错别字修正

3、然后看一下列标题:

data.columns
Index(['Unnamed: 0', 'context', 'role_id', 'resource', '错别字_paddle', '错标点_paddle'],
      dtype='object')

4、由于需求是只需求对 context 中的错别字进行批改,因而,只需求关注到两列 context错别字_paddle 就行,先看看 错别字_paddle 的情况:

data['错别字_paddle']

【PY】pandas 处理 Excel 中错别字修正

能够看到,从 pandas 导入处理之后,没有数据的值被显现为 NaN,而有数据值的照常显现,比如 [{'position': 18, 'correction': {'的': '地'}}],那接下来怎么处理的思路就非常明晰了;

对于不需求批改的语句,也便是 错别字_paddle 这列值为 NaN 的,直接将原句挪回去就行了,因而只需求一个判别条件和 NaN 比较为真就行了,这儿的话办法有多种,比较直接的便是运用 pandas 自带的函数 isna()

pd.isna(data.loc[index].values[4])
  • 当值为 NaN

    【PY】pandas 处理 Excel 中错别字修正

  • 当值不为 NaN

    【PY】pandas 处理 Excel 中错别字修正

当然也能够先经过 type() 函数得知该字段类型为 float但这儿有一个坑,直接用 float('nan') 进行判别回来的会是 False,不过能够借助 hash() 函数来进行判别:

hash(float('NaN')) == hash(NaN)

【PY】pandas 处理 Excel 中错别字修正

看实践场景进行选择即可;

对于要批改的语句,不难发现,类似 [{'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'])

【PY】pandas 处理 Excel 中错别字修正

最终便是依照 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()

【PY】pandas 处理 Excel 中错别字修正

跋文

以上便是 pandas 处理 Excel 中错别字批改 的全部内容了,解说了怎么经过 pandas 工具包来操作 Excel,结合实践场景,具体问题具体分析,图文并茂,细致的解说了操作过程以及其间需求注意的细节,期望大家有所收成!

上篇精讲:【PY】Python3 字节码混杂

我是,等待你的关注;

创造不易,请多多支撑;

系列专栏:PY