【问题标题】:String/regex search over Excel in Python issue在 Python 问题中通过 Excel 进行字符串/正则表达式搜索
【发布时间】:2016-08-30 05:30:08
【问题描述】:

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

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

程序会查看 excel 文件的目录(和子目录),单独打开它们,搜索数据(在特定工作表上),然后将其转储到 csv 中。由于每个搜索词都有效地针对列的头部,因此涉及到循环,我希望在此下方有 4 个值。

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

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

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]

此函数适用于搜索存在的字符串(迄今为止一直如此)。我想在 some excel 文件不包含我要搜索的术语时添加冗余,但其他人会(它可以只返回一些空白单元格的合成坐标,例如 1000,1000 或其他东西)。

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

我认为我有一个简单的逻辑问题,但我就是看不到;如果有人能给我一些指点,我们将不胜感激(并且热切地!)收到帮助。

我已经复习的问题(但我仍然迷路):

In Python how should I test if a variable is None, True or False

OpenPyXL + How can I search for content in a cell in Excel, and if the content matches the search criteria update the content?

【问题讨论】:

  • 如果工作表不包含您要查找的内容,则返回值为 None:这是任何没有显式返回的 Python 函数的返回值。
  • 谢谢,是的,这就是我现在得到的(到目前为止建议的答案),即使我知道可以找到价值。我确信我有一个逻辑问题。就是不知道是什么!

标签: python regex excel openpyxl


【解决方案1】:
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循环之后返回,只有在没有找到匹配的情况下才会执行。

【讨论】:

  • 我实际上已经尝试过 - 将 return [100,100] 移动到所有位置(我意识到这很愚蠢!)但不幸的是这不起作用 - 它只会为每个正在寻找的值返回 None,这意味着它什么也没找到,只是倾倒。
  • 编辑:一千个道歉!!!是的,这已解决。最初它没有,但我在另一个函数中遇到了类似的错误(这取决于这个结果),我现在已经修复了。非常感谢。
猜你喜欢
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
相关资源
最近更新 更多