使用Python在Excel(.xlsx)中查找和替换字符串
我正在尝试替换.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)
-
我会将您的文本文件的内容复制到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