如何在Python中使用通配符

2024-10-03 21:34:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手。我正在尝试编写一个函数,该函数将接受字符串(excel中的公式),并将ISBLANK()的任何用法替换为FALSE。这就是我正在尝试的,似乎无法让它发挥作用

temp = sheet[cellCord].value
temp = temp.replace("ISBLANK(*)", "FALSE")
sheet[cellCord].value = temp

大多数情况下,它会在早期的单元格中,所以我也尝试使用三个“?”而不是“*”,但仍然不起作用。如果你们有什么建议或好的资源可以帮助我,我将不胜感激

编辑:我试图做的一个例子就是改变

=IF(ISBLANK(W22), "", (X22/W13))

进入

=IF(FALSE, "", (X22/W13))

Tags: 函数字符串false用法ifvalueexceltemp
2条回答

您将希望使用一个能够准确捕获所需内容的正则表达式,然后使用re.sub仅替换该正则表达式

r"ISBLANK\([^)]+\)"{}+“任何事情直到),+)

In [2]: import re

In [3]: re.sub(r"ISBLANK\([^)]+\)", "FALSE", 'ISBLANK(W22)')
Out[3]: 'FALSE'

In [5]: re.sub(r"ISBLANK\([^)]+\)", "FALSE", '=IF(ISBLANK(W22), "", (X22/W13))')
Out[5]: '=IF(FALSE, "", (X22/W13))'

也可以用逗号分割文本,然后用

'=IF(FALSE,' + ','.join(values[1:])

In [6]: values = '=IF(ISBLANK(W22), "", (X22/W13))'.split(',')

In [8]: '=IF(FALSE,' + ','.join(values[1:])
Out[8]: '=IF(FALSE, "", (X22/W13))'

python中的通配符可以使用re模块实现。我相信你正在试图用FALSE替换ISBLANK("Anything inside this")

请尝试使用此选项:

import re

temp = sheet[cellCord].value
temp = re.sub(r"ISBLANK\([\w\d\.-_&%$@#\!^,\/\?'\"]*\)", "FALSE", temp)
sheet[cellCord].value = temp

相关问题 更多 >