Python实现批量替换Excel中字符

 更新时间:2024年11月18日 08:55:12   作者:PythonFun  
这篇文章主要为大家详细介绍了如何使用Python实现批量替换Excel中字符,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

一、问题由来

聚会计划一些菜品,现根据实际需要把B列中一些菜品更换一些,替换成C列中的菜品,最终结果写到E列当中,如下图效果所示。

问题示意图

二、解决办法

本人经过思考,考虑到这是一个批量替换的问题,我们需要先找到更换的菜品,在原计划菜品中定位,然后更换为新菜品,手工复制粘贴极其麻烦,这时可以考虑在WPS当中使用substitutes进行批量替换。在Excel中没有stubstitutes这个函数,可以考虑使用vlookup函数。

如果是在线表格,还可以在WPS当中使用Python来解决这个问题。

1. substitutes函数

其语法是substitutes(目标数据列,原数据列,新数据列)

这是目标数据列是A2:A19,原数据列是B2:B4, 新数据列是C2:C4。

我们可以在E2中输入以下公式,回车即可:

=substitutes(A2:A19,B2:B4,C2:C4)

这种解法,思路清晰,操作简单,易不易记,推荐。当然如果B2:B4和C2:C4不在当前工作表,也可以跨表引用,这样可以实现数据的跨表分离,适用于进行大量数据的替换。

这里要注意的时,替换的内容不要重复,否则就会容易适成混乱。

2. vlookup函数法

在Excel中没有substitutes,只有substitute, 所以考虑可以使用iferror+vlookup的方法来解决这个问题。

首先要明确:

  • A列:聚会计划菜单
  • B列:原菜品
  • C列:替换菜品

假设您希望在 E列 中输出替换后的菜品,您可以使用以下公式:

=IFERROR(VLOOKUP(A2, B:C, 2, FALSE), A2)

公式解释:

A2:聚会计划菜单中的菜品(假设从 A2 开始)。

B:C:包含原菜品和替换菜品的表格区域。

数字2表示我们要从 B 和 C 列的第二列(即“替换菜品”列)提取替换菜品。

FALSE:确保精确匹配原菜品。

IFERROR:如果没有找到对应的替换菜品,则返回原菜品(即 A2)。

E2填写完后,再选中右下角十字,双击填充即可。

3. 在线Python法

最新的wps在线文档已经支持调用Python代码,我们可以使用以下代码实现。由于在线文档已经把常用的模块导入,所以我们不必导入pandas模块,直接写代码。

# 读取 Excel 数据
df = xl("$A$42:$A$59", headers=None, sheet_name="Sheet1")
 
replacement_dict = {}
for row in range(42, len(df)):
    original = df[row][1]  # 假设原菜品在第二列(索引为1)
    replacement = df[row][2]  # 假设替换菜品在第三列(索引为2)
    replacement_dict[original] = replacement
# 初始化起始写入位置
start_row = 42
print(replacement_dict)
for text in df[0]:  # 假设聚会计划菜单在第一列(索引为0)
    try:
        # 查找是否有对应的替换菜品
        if text in replacement_dict:
            new_text = replacement_dict[text]  # 如果有替换菜品,使用替换菜品
        else:
            new_text = text  # 否则保持原菜品
        write_xl(new_text,f"$E${start_row}",sheet_name="Sheet1")
    except Exception as e:
        # 发生错误时写入“查无此词”
        write_xl("查无此词", f"$B${start_row}", sheet_name="Sheet1")
    start_row+=1

Python的思路时,先读取表格,建立一个新旧菜名的字典,然后遍历A列,应用字典,再写入到指定列即可。

其中xl()是在wps中读取表的函数,write_xl是写入表的函数,这是与普通pandas模块不一样的。

4. 线下Python法

如果是线下python,就可以使用pandas模块来解决这个问题。通过读取you_file.xlsx文件,然后创建字典,替换后生成update_menu.xlsx。这种方法适用于数据量多的情况。如果替换的文件比较多,可以考虑把字典内容单独放,这样就变成了批量的读取字典,替换Excel文件的功能了。

import pandas as pd
 
# 读取Excel文件中的数据
df = pd.read_excel('your_file.xlsx', sheet_name='Sheet1')
 
# 假设您的Excel中有3列:聚会计划菜单、原菜品、替换菜品
# df.columns = ['聚会计划菜单', '原菜品', '替换菜品']
 
# 创建一个字典来映射原菜品到替换菜品
replacement_dict = dict(zip(df['原菜品'], df['替换菜品']))
 
# 假设在聚会计划菜单中需要替换的是原菜品
def replace_dishes(menu):
    # 如果菜单中的菜品在字典中找到,则替换为对应的替换菜品
    return replacement_dict.get(menu, menu)
 
# 假设您的菜单数据存储在 "聚会计划菜单" 这一列
df['聚会计划菜单'] = df['聚会计划菜单'].apply(replace_dishes)
 
# 将更新后的DataFrame保存到新的Excel文件
df.to_excel('updated_menu.xlsx', index=False, sheet_name='UpdatedSheet')

三、学后总结

1. 不同场景需要的不同的解决办法,不同的方法各有优劣。WPS中用substitutes, Excel中用vlookup,如果数据量较大,可以考虑用python。

2. 在数据量较少的情况下,wps的公式甚至比py执行效率还高。但是如果是几十个文件,替换的内容成百上千时,用线下的python代码进行替换就方便了。

3. 这是一个菜品替换小项目,如果换成翻译中的术语替换,也可以采用同样的操作,推荐使用substitutes,因为这个函数简单易于理解。

到此这篇关于Python实现批量替换Excel中字符的文章就介绍到这了,更多相关Python批量替换Excel字符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pandas读取中文xlsx文件出现的问题

    pandas读取中文xlsx文件出现的问题

    这篇文章主要介绍了pandas读取中文xlsx文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Matlab中关于argmax、argmin函数的使用解读

    Matlab中关于argmax、argmin函数的使用解读

    这篇文章主要介绍了Matlab中关于argmax、argmin函数的使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python语言元素知识点详解

    python语言元素知识点详解

    在本篇文章中小编给大家分享了关于python语言元素的相关知识点以及实例代码,需要的朋友们跟着学习下。
    2019-05-05
  • Python中的if、else、elif语句用法简明讲解

    Python中的if、else、elif语句用法简明讲解

    这篇文章主要介绍了Python中的if、else、elif语句的用法讲解,条件判断语句是程序中流程控制的基础办法之一,需要的朋友可以参考下
    2016-03-03
  • Python pyttsx3库实现文本转语音功能的示例

    Python pyttsx3库实现文本转语音功能的示例

    pyttsx3是一个功能强大且易于使用的文本转语音库,适合需要离线语音合成的场景,本文就来介绍一下Python pyttsx3库实现文本转语音功能的示例,感兴趣的可以了解一下
    2025-04-04
  • 解决Python3中的中文字符编码的问题

    解决Python3中的中文字符编码的问题

    Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等。这篇文章主要介绍了Python3中的解决中文字符编码的问题,需要的朋友可以参考下
    2018-07-07
  • 合并百度影音的离线数据( with python 2.3)

    合并百度影音的离线数据( with python 2.3)

    这篇文章主要介绍了合并百度影音的离线数据( with python 2.3)的相关资料
    2015-08-08
  • 非常详细的Django连接mysql数据库步骤记录

    非常详细的Django连接mysql数据库步骤记录

    我的Mysql中已经有了项目需要使用的相关数据库,现在需要通过django来获取Mysql里的数据并使用,下面这篇文章主要给大家介绍了关于非常详细的Django连接mysql数据库步骤,需要的朋友可以参考下
    2022-10-10
  • Python使用JSON库解析JSON数据的方法

    Python使用JSON库解析JSON数据的方法

    这篇文章主要介绍了Python使用JSON库解析JSON数据,主要包括如何在网页中获取json数据及python内置的json库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 使用OpenCV对车道进行实时检测的实现示例代码

    使用OpenCV对车道进行实时检测的实现示例代码

    这篇文章主要介绍了使用OpenCV对车道进行实时检测的实现示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论