Python 使用正则表达式作为URL地址?

Python 使用正则表达式作为URL地址?,python,regex,api,Python,Regex,Api,我正在使用API抓取一些数据,并搜索带有屏幕名的数据。 我有名字的列表,但是屏幕名称的格式不同 例如,Kevin Walker的屏幕名是Kevin Walker3。 所以当我循环遍历所有名称时,我想在URL的末尾添加正则表达式, 这样我就可以搜索Kevin Walker3或Kevin Walker294或名字后面的任何号码 我的代码如下所示: intregex = re.compile(r'[-+]?[0-9]+$') test = zillow_url+"zws-id="+myip+"&

我正在使用API抓取一些数据,并搜索带有屏幕名的数据。 我有名字的列表,但是屏幕名称的格式不同

例如,Kevin Walker的屏幕名是Kevin Walker3。 所以当我循环遍历所有名称时,我想在URL的末尾添加正则表达式, 这样我就可以搜索Kevin Walker3或Kevin Walker294或名字后面的任何号码

我的代码如下所示:

intregex = re.compile(r'[-+]?[0-9]+$')
test = zillow_url+"zws-id="+myip+"&screenname="+name+intregex+"&output=json"
我得到一个错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-253-9bd9aba62594> in <module>
      1 intregex = re.compile(r'[-+]?[0-9]+$')
----> 2 test = zillow_url+"zws-id="+Sushant+"&screenname="+name+intregex+"&output=json"

TypeError: can only concatenate str (not "re.Pattern") to str

有没有办法在字符串中使用正则表达式?任何提示或帮助都将不胜感激

正则表达式不是这样工作的。它不是路径或API URL端点中的通配符。您需要将文本输入与正则表达式模式匹配,以查看是否存在匹配项,或者提取匹配项,替换它们,等等


如果您的供应商API不明确支持通配符或搜索模式功能,那么您将被卡住。此外,如果你不能从你得到的真实姓名中获得屏幕名称,那么很可能你无论如何都不会得到任何结果。

你的代码会更接近,但如果它是

intregex = re.compile(r'[-+]?[0-9]+$')
test = r'zillow_url+"zws-id="+myip+"&screenname="+name+blah+"&output=json"'
intregex.findall(test)
但这是行不通的。所以,也许看看这个,看看它有什么作用

import re

pattern = re.compile(r'^.*?&(.*?)\+.*?$')

my_string = r'https://helloworld.com-10.00.00.01&MarkyMarkandtheFunkyBunch71+Mark&abc1234'

print(pattern.findall(my_string))
产出:

['MarkyMarkandtheFunkyBunch71']

也许这有助于你更亲近?显然,您编译的正则表达式模式必须与其检查的URL结构相匹配。

为什么要将正则表达式放入字符串中?正则表达式用于模式匹配和执行替换、捕获和匹配。zillow API是否允许将正则表达式插入这样的GET请求中?如果是这样的话,可能只是插入reg字符串本身而不是re.Pattern对象,但我以前从未见过这样的事情。您希望regex与什么进行匹配?名单?或者你想传递一个正则表达式来搜索RESTAPI数据库中的值吗?我有一个没有任何数字的名字列表,但是我注意到对于screenname,人们可以选择他们想要的任何东西。例如Kevin Walker3,但我不知道数字,所以我想知道我是否可以在屏幕名Kevin Walker3下获取数据,即使我只有Kevin Walker的名字,使用Regex。我看不出他们在哪里支持Regex,你能在你的机器上获得一个属性的所有评论和Regex吗?所以我只有名字,没有其他。。。我使用他们的名字获取了大部分数据。一些代理的屏幕名称与他们的名字相同,但大多数不是。我看到了一些模式,人们在他们的名字后面用数字来组成他们的屏幕名称。所以根本没有办法?我也很好奇是否有一种天才般的方式来做这件事……如果我正确理解了你的要求,不幸的是,我认为没有。