Python Zapier:代码未返回预期的所有值

Python Zapier:代码未返回预期的所有值,python,regex,zapier,Python,Regex,Zapier,我正在使用Zapier的代码,很难判断我的正则表达式是错的还是其他部分错了(我认为后者) 我正在拉一个URL,这个URL有几个9位数的ID附加到URL的末尾。我被告知尝试提取这些ID并重建URL,以便我们可以为每个ID发布API调用 我是一个Python新手,但到目前为止,我有这个,但它只返回前9位ID,我希望有一个数组,这样我就可以用每个特定ID重建URL。这是我到目前为止的代码: import re urls = re.findall(r'\b\d+\b', input_data['

我正在使用Zapier的代码,很难判断我的正则表达式是错的还是其他部分错了(我认为后者)

我正在拉一个URL,这个URL有几个9位数的ID附加到URL的末尾。我被告知尝试提取这些ID并重建URL,以便我们可以为每个ID发布API调用

我是一个Python新手,但到目前为止,我有这个,但它只返回前9位ID,我希望有一个数组,这样我就可以用每个特定ID重建URL。这是我到目前为止的代码:

import re
    urls = re.findall(r'\b\d+\b', input_data['input'])
         return [
             {'url': url} for url in urls
]
输入数据将是
”https://api.helpscout.net/v1/conversations/123456789,098765432.json“

正如我所说的,它只返回第一个ID。我知道我没有代码来重建URL或任何试图一步一个脚印的东西


是我的正则表达式不正确还是我返回它们的方式不正确?谢谢

代码在我的机器上正常工作:

import re

def get_digits(s):
    return [{'url':url} for url in re.findall(r'\b\d+\b',s)]
如果我用示例输入调用此函数,我会得到:

>>> get_digits("https://api.helpscout.net/v1/conversations/123456789,098765432.json")
[{'url': '123456789'}, {'url': '098765432'}]
所以有两本字典的清单。每个字典都包含一个键,一个与包含一个或多个数字的字符串关联的
'url'

如果您只想匹配9位序列,可以使正则表达式更严格(但这只能减少匹配的数量):

重新导入
def get_数字:

return[{'url':url}返回re.findall(r'\b\d{9}\b',s)]
Argh非常令人沮丧,我决定尝试JavaScript,多个方法都不输出任何内容

<script>
var str = "https://api.helpscout.net/v1/conversations/382411278,374879346,374879343.json";
var tickets = str.match(/\d{9}/g);
for(var i = 0; i<tickets.length; i++)
    {
document.write("https://api.helpscout.net/v1/conversations/"+tickets[i]+".json</br>")
}

var str=”https://api.helpscout.net/v1/conversations/382411278,374879346374879343.json”;
var tickets=str.match(/\d{9}/g);

对于(var i=0;iDavid,来自Zapier平台团队。我有好消息和坏消息

好消息是,你的正则表达式可以工作!所以不用担心。缺点是,你在代码步骤中遇到了一个奇怪的情况。它没有被记录下来,因为我们不鼓励使用它(你可以看出这很混乱)。当你从代码步骤返回数组时,它的功能就像触发器一样。也就是说,后面的步骤会对数组中的每个项运行(但UI仅显示第一个)

如果这是您想要的行为,那么您可以安全地忽略这个奇怪的测试并完成zap。如果您不想散开,您应该解析出逗号分隔的字符串,然后再对其进行操作

如果你需要更多的指导,让我知道你的其他行动是什么,我可以从那里提出建议


请注意,上面Willem函数出现错误消息的原因是python代码必须将
output
变量设置为一个值或返回一个对象。
return get_digits(input_data['input'])
output=get_digits(input_data['input'])
应该有用。

如果我点击链接,我会得到400分。嗨,威廉,谢谢你收紧了正则表达式!问题是当使用Zapier的Zapier部分的代码时,它对事情变得非常挑剔,并不断告诉我“请定义输出或尽早返回”"在Zapier中编写代码非常令人沮丧,但在这种情况下我别无选择。不幸的是!嗨,David,很抱歉我错过了这条评论!感谢您回复我!因此,如果我在这之后使用一个操作步骤,这是一个Python代码步骤,根据数组中返回的每个URL进行POST调用,您会说它实际上会在数组中运行在我的Python代码部分?我今天可以试一试,让你知道我的进展如何。谢谢!这是正确的!如果步骤a返回5个url,而步骤B对该url执行post请求,当它真正运行时,步骤B将在每次a触发时运行5次。小心,因为这可能会快速完成任务分配!
<script>
var str = "https://api.helpscout.net/v1/conversations/382411278,374879346,374879343.json";
var tickets = str.match(/\d{9}/g);
for(var i = 0; i<tickets.length; i++)
    {
document.write("https://api.helpscout.net/v1/conversations/"+tickets[i]+".json</br>")
}
<p id="demo"></p>
<script>
function myFunction() {
    var str = "https://api.helpscout.net/v1/conversations/382411278,374879346,374879343.json";
    var tickets = str.match(/\d{9}/g);

    for(var i = 0; i<tickets.length; i++)
    {
      document.getElementById("demo").innerHTML +="https://api.helpscout.net/v1/conversations/" +tickets[i] + "<br />"
    }

}
</script>