替换文档中部分单词的有效方法,其中替换单词在 Excel 中定义

问题描述 投票:0回答:1

我有一个很大的 .txt 文件 我已经在 python 中使用

readlines()
阅读了它

样品:

lines = ["XX_A_Name, A_Bad_Joke = '67' , \n", "A quick Black.Jack fox JJ_Value over XX_A_Name a.lazy.dog\n"]

替换在 Excel 文件中定义:

OldName    New_replacement
XX_A_        ZZ_B_
A_Bad_Joke   C_Good_Joke
Black.Jack   Yellow.flower
JJ_Value     KK_Sum
a.lazy.dog   very.huge

我想读取 Excel 文件并替换 txt 文件中 OldName 列中列出的所有值。

例如:示例输出应该类似于:

["ZZ_B_Name, C_Good_Joke = '67' , \n",  "A quick Yellow.flower fox KK_Sum over ZZ_B_Name very.huge\n"]

我想为此创建一个函数。因为这只是我粘贴到此处的 txt 文件的示例部分。有多个 .txt 文件需要加载、替换并保存为新的 .txt 文件。

我正在寻求帮助,以找到一种有效且快速的方法来做到这一点。

可以使用

pd.read_excel()
读取 excel,并且
re
包可用于replace()。但我无法理解一切如何组合在一起。

python python-3.x replace
1个回答
0
投票

假设您有一个电子表格,其中 A 和 B 列中包含替换值。第一行无关紧要。

对于每个原始文档,创建一个新文件,原始文档名称前缀为“new_”。

根据替换列表的大小,迭代调用 str.replace 的输入文档次数。这可能不是最有效的机制,但它在功能上是正确的。

import openpyxl

# list of documents to process
document_list = ["Document.txt"]

wb = openpyxl.load_workbook("Replacements.xlsx")

replacements = []

for row in wb.active.iter_rows(min_row=2, values_only=True):
    # clean up any leading/trailing whitespace
    replacements.append(tuple(map(str.strip, row)))

for file in document_list:
    with open(file) as data_in, open("new_"+file, "w") as data_out:
        for line in data_in:
            for r in replacements:
                line = line.replace(*r)
            data_out.write(line)
© www.soinside.com 2019 - 2024. All rights reserved.