当前位置: 首页 > 知识库问答 >
问题:

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

严宏旷
2023-03-14

我正在尝试替换一组字符串。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)

共有3个答案

逄念
2023-03-14

与@coder_A的想法类似,但是使用字典为您进行“翻译”,其中键是原始单词,每个键的值是它被翻译成的值。

鲍理
2023-03-14

制作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;
}
}

为了加快速度,您必须在替换单词后立即停止当前迭代,并检查下一行。

胥和悌
2023-03-14

我会将文本文件的内容复制到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