我正在尝试替换一组字符串。xlsx表(约70k行,38列)。我有一个文件中要搜索和替换的字符串列表,格式如下:-
bird produk - bird product
pig - pork
ayam - chicken
...
kuda - horse
要搜索的单词在左侧,替换词在右侧(查找“bird produk”,替换为“bird product”)。My.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)
谢谢你!
我终于明白了。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)
与@coder_A的想法类似,但是使用字典为您进行“翻译”,其中键是原始单词,每个键的值是它被翻译成的值。
制作2个数组A[bird produk,pig,ayam,kuda]//要更改的单词B[bird produk,pork,chicken,horse]//更改单词后的结果
现在检查excel的每一行,并将其与A的每个元素进行比较。如果我匹配,则将其替换为B的相应元素。
例如//不是像伪代码这样的实际代码
for (i=1 to no. of rows.)
{
for(j=1 to 200)
{
if(contents of row[i] == A[j])
then contents of row[i]=B[j] ;
break;
}
}
为了加快速度,您必须在替换单词后立即停止当前迭代,并检查下一行。
我会将文本文件的内容复制到excel文件中的新工作表中,并将该工作表命名为“查找”然后使用“文本到列”从第一行开始获取新工作表前两列中的数据。
将以下代码粘贴到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
问题内容: 我正在使用以下内容以递归方式在目录中搜索特定的字符串,并将其替换为另一个: 这样可以。唯一的问题是,如果字符串不存在,则失败,因为它没有任何参数。这对我来说是个问题,因为我是使用ANT自动运行的,而构建由于失败而失败。 如果找不到该字符串,有没有办法使它失效? 我对我可以使用的单行简单解决方案感兴趣(不一定与或与此类通用unix命令一起使用)。 问题答案: 您可以使用和直接进入,而不是
问题内容: 我正在寻找使用python编辑XML文件。我想查找并替换标签中的关键字。过去,一位同事建立了XML模板文件,并使用“查找并替换”程序替换了这些关键字。我想使用python查找和将这些关键字替换为值。我一直在自学Elementtree模块,但是在尝试查找和替换时遇到了麻烦。我已经附上了我的XML文件的片段。您将看到一些被%包围的变量(即%SITEDESCR%),这些是我要替换的单词,然后
问题内容: 我有一个大约40万行的文本文件。我需要将此文本文件导入一个程序,该程序仅接受以空格或制表符分隔的文本文件,但是此文本文件以分号分隔。我要从(Arcmap)导出文本文件的程序中没有选项来更改分隔,并且在文本文件本身中进行查找和替换实际上需要2天。 我已经搜索了一个脚本来执行此操作,但是它们似乎都用空格替换了单词文件的整个LINE,而不是单独替换了每个分号,而给我留了一个空的文本文件。 这
问题内容: 我得到了这个清单: 我想用一些与之相似的奇异值代替,从而得到一个新的清单: 问题答案: 这些称为列表推导。
我正在尝试使用正则表达式替换单词。但不管用。 我试图只替换有一个点的单词(.)
问题内容: 我需要将非ASCII的某些字符更改为“ _”。例如, 如果我在Python中使用正则表达式,该怎么做? 有没有不使用RE的更好方法呢? 问题答案: 针对Python 3更新: 首先,我们使用创建字节字符串-默认情况下,它使用UTF-8编解码器。如果您有字节字符串,那么当然可以跳过此编码步骤。然后,我们使用ascii编解码器将其转换为“普通”字符串。 这使用了UTF-8的属性,即所有非A