使用Python在Excel(.xlsx)中查找和替换字符串

发布于 2021-01-29 16:17:06

我正在尝试替换.xlsx工作表中的一堆字符串(〜70k行,38列)。我有一个要搜索和替换为文件的字符串列表,格式如下:

bird produk - bird product
pig - pork
ayam - chicken
...
kuda - horse

要搜索的词在左侧,而替换词在右侧(找到“ bird produk”,替换为“ bird product”。我的.xlsx工作表如下所示:-

name     type of animal     ID
ali      pig                3483
abu      kuda               3940
ahmad    bird produk        0399
...
ahchong  pig                2311

我正在寻找最快的解决方案,因为列表中大约有200个单词要搜索,并且.xlsx文件很大。我需要为此使用Python,但是我愿意接受其他任何更快的解决方案。

编辑:-添加工作表示例

Edit2:-尝试了一些python代码来读取单元格,花费了很长时间。有指针吗?

from xlrd import open_workbook
wb = open_workbook('test.xlsx')

for s in wb.sheets():
    print ('Sheet:',s.name)
    for row in range(s.nrows):
        values = []
        for col in range(s.ncols):
            print(s.cell(row,col).value)

谢谢!

Edit3:-我终于想通了。 VBA模块和Python代码都可以使用。我改用.csv来简化事情。谢谢!这是我的Python代码版本:-

import csv

###### our dictionary with our key:values. ######
reps = {
    'JUALAN (PRODUK SHJ)' : 'SALE( PRODUCT)',
    'PAMERAN' : 'EXHIBITION',
    'PEMBIAKAN' : 'BREEDING',
    'UNGGAS' : 'POULTRY'}


def replace_all(text, dic):
    for i, j in reps.items():
        text = text.replace(i, j)
    return text

with open('test.csv','r') as f:
    text=f.read()
    text=replace_all(text,reps)

with open('file2.csv','w') as w:
    w.write(text)
关注者
0
被浏览
157
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我会将您的文本文件的内容复制到excel文件中的新工作表中,并将该工作表命名为“ Lookup”。然后使用文本列,以获取该新表的前两列中从第一行开始的数据。

    将以下代码粘贴到Excel中的模块中并运行它:

    Sub Replacer()
        Dim w1 As Worksheet
        Dim w2 As Worksheet
    
        'The sheet with the words from the text file:
        Set w1 = ThisWorkbook.Sheets("Lookup")
        'The sheet with all of the data:
        Set w2 = ThisWorkbook.Sheets("Data")
    
        For i = 1 To w1.Range("A1").CurrentRegion.Rows.Count
            w2.Cells.Replace What:=w1.Cells(i, 1), Replacement:=w1.Cells(i, 2), LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Next i
    
    End Sub
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看