在Python问题中通过Excel搜索字符串/正则表达式

String/regex search over Excel in Python issue

我是So的新手,对Python比较陌生,所以如果这是一个简单的修复或不适当的问题,我很抱歉。

首先,我的程序通常可以工作,但我正试图实现一些冗余/捕获,以使其健壮。

该程序查看Excel文件的目录(和子目录),分别打开它们,搜索数据(在特定的工作表上),并将其转储到一个csv。由于每个搜索项都有效地用于列头,因此涉及到循环,我希望在这下面有4个值。

我使用正则表达式定义搜索词。

我已经编写了一个函数来搜索Excel工作表中是否与正则表达式匹配。工作表在单元格中具有字符串和其他格式类型,因此字符串的类型(查询)。

1
2
3
4
5
6
7
def SearchXLWithRe(regex)
    for i in range(1, Row_limit):         # row limit is defined by OpenPyXL module
        for j in range(1, Column_limit):    # same here for column limit
            query = ws.cell(row = i, column = j).value
            if type(query) == str:         # i only want to look at strings
                if regex.search(query):    # of the responses that are strings, i want to match to the regex
                    return [i,j]

此函数用于搜索存在的字符串(到目前为止一直如此)。我想在某些Excel文件不包含我要搜索的词,但其他文件包含的时候添加冗余(它可以返回一些空白单元格的组合坐标,例如10001000或其他)。

我试过放一个else,但是由于它在一个excel文档上循环并找到多个字符串,所以所有这些返回都是一个无。

我想我有一个简单的逻辑问题,但我就是看不见;如果有人能给我一些建议,我会感激地(急切地)帮助我的。收到。

我回顾过的问题(但我还是迷路了):

在python中,如何测试变量是否为none、true或false

OpenPYXL+如何在Excel中搜索单元格中的内容,如果内容符合搜索条件,如何更新内容?


1
2
3
4
5
6
7
8
def SearchXLWithRe(regex)
    for i in range(1, Row_limit):         # row limit is defined by OpenPyXL module
        for j in range(1, Column_limit):    # same here for column limit
            query = ws.cell(row = i, column = j).value
            if type(query) == str:         # i only want to look at strings
                if regex.search(query):    # of the responses that are strings, i want to match to the regex
                    return [i,j]
     return [x,y] #x,y are the dummy locations

只在for循环之后返回,只有在未找到匹配项时才会执行。