我正在尝试替换.xlsx工作表中的一组字符串(大约70k行,38列)。我有一个要在文件中搜索和替换的字符串列表,格式如下:
bird produk - bird product
pig - pork
ayam - chicken
...
kuda - horse
要搜索的单词在左侧,替换词在右侧(查找“bird produk”,替换为“bird produc”)。我的.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)
谢谢你!
编辑3:-我终于弄明白了。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文件中的新工作表中,并将该工作表命名为“查找”。然后使用“文本到列”从第一行开始获取此新工作表前两列中的数据。
将以下代码粘贴到Excel中的模块中并运行:
生成2个数组 A[bird produk,pig,ayam,kuda]//需要更改的单词 B[鸟制品,猪肉,鸡肉,马]//改词后结果
现在检查excel的每一行并将其与A的每个元素进行比较。如果匹配,则将其替换为B的相应元素
例如 //不是真正的代码类似于伪代码
为了加快速度,必须在替换单词后立即停止当前迭代并检查下一行。
类似于@coder_A的想法,但是使用字典来为您进行“翻译”,其中键是原始单词,每个键的值是它被翻译成的内容。
生成2个数组 A[bird produk,pig,ayam,kuda]//需要更改的单词 B[鸟制品,猪肉,鸡肉,马]//改词后结果
现在检查excel的每一行并将其与A的每个元素进行比较。如果匹配,则将其替换为B的相应元素
例如 //不是真正的代码类似于伪代码
为了加快速度,必须在单词被替换后立即停止当前迭代并检查下一行。
相关问题 更多 >
编程相关推荐