pl/python TypeError:sequence item 21:预期字符串,找到int

2024-05-29 06:57:23 发布

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

朋友:在postgresqlpython中,我试图在文本块'data'中进行迭代搜索/替换。在

使用re-sub定义匹配模式,然后调用函数“replace”来完成这项工作。 目标是重复调用“replace”函数,因为某些替换会生成进一步的“rule”匹配,这需要进一步的替换。在

所有的工作都很好,通过许多,许多替换-我正在设法触发重复循环的第二遍。然后,直到有东西导致Regex模式返回一个整数(?)--很明显在这一点上没有找到匹配的??我尝试过测试“None”和“0”,但没有成功。思想?在

data = (a_huge_block of_text)

# ======================  THE FUNCTION  ==============
def replace(matchobj):
 tag = matchobj.group(1)
 plpy.info("-------- matchobj.group(1), tag: ", tag)
 if matchobj.group(1) != '':
  (do all the replacement work in here)
# ======================  END FUNCTION  ==============

passnumber = 0
# If _any_ pattern match is found, process all of data for _all_ matches:
while re.search('(rule:[A-Za-z#]+)', data) != '':
 # BEGIN repeat loop:
 passnumber = passnumber + 1
 plpy.info(' ================================  BEGIN PASS: ',  passnumber)

 data = re.sub('(rule:[A-Za-z#]+)', replace, data)
 plpy.info(' =================================== END PASS: ',  passnumber)

上面的代码在第二次迭代中运行得很好。。。然后:

^{pr2}$

也试过了搜索(...) !=''--和搜索(...) !='无'——结果相同。 意识到我必须找到一些可读的形式来表示对象。。。在


Tags: ofreinfodatatag模式groupfunction
1条回答
网友
1楼 · 发布于 2024-05-29 06:57:23

当然,一旦你了解了Python,答案就会变得非常简单!(我没有!)在

为了启动重复循环,我一直在做这个测试:

while re.search('(rule:[A-Za-z#]+)', data) != '':

我也试过这个,但也不管用:

^{pr2}$

当然,None结果可以被捕获,但不需要引用。就这么简单:

while re.search('(rule:[A-Za-z#]+)', data) != None:

一切都很简单,一旦你知道了!在

相关问题 更多 >

    热门问题