在url中传递变量?

时间:2012-06-21 05:07:56

标签: python json url urllib urlopen

所以我是python的新手,我迫切需要帮助。

我有一个文件,里面写着一堆id(整数值)。它是一个文本文件。

现在我需要将文件中的每个id传递给一个url。

例如“https://example.com/[id]”

将以这种方式完成

A = json.load(urllib.urlopen("https://example.com/(the first id present in the text file)"))
print A

这将基本上做的是它将读取有关上述URL中存在的id的某些信息并显示它。我希望它以循环格式工作,在其中它将读取文本文件中的所有ID并将其传递给'A'中提到的URL并持续显示值。有没有办法做到这一点?

如果有人可以帮助我,我将非常感激!

4 个答案:

答案 0 :(得分:16)

可以使用旧样式字符串连接

>>> id = "3333333"
>>> url = "https://example.com/%s" % id
>>> print url
https://example.com/3333333
>>> 

新样式字符串格式:

>>> url = "https://example.com/{0}".format(id)
>>> print url
https://example.com/3333333
>>> 

avasal所提及的文件读数稍有变化:

f = open('file.txt', 'r')
for line in f.readlines():
    id = line.strip('\n')
    url = "https://example.com/{0}".format(id)
    urlobj = urllib.urlopen(url)
    try:
        json_data = json.loads(urlobj)
        print json_data
    except:
        print urlobj.readlines()

答案 1 :(得分:5)

懒惰风格:

url = "https://example.com/" + first_id

A = json.load(urllib.urlopen(url))
print A

旧式:

url = "https://example.com/%s" % first_id

A = json.load(urllib.urlopen(url))
print A

新款式2.6 +:

url = "https://example.com/{0}".format( first_id )

A = json.load(urllib.urlopen(url))
print A

新款式2.7 +:

url = "https://example.com/{}".format( first_id )

A = json.load(urllib.urlopen(url))
print A

答案 2 :(得分:2)

您需要做的第一件事就是知道如何从文件中读取每一行。首先,你必须打开文件;您可以使用with语句执行此操作:

with open('my-file-name.txt') as intfile:

这将打开一个文件,并在intfile中存储对该文件的引用,它将自动关闭with块末尾的文件。然后,您需要从文件中读取每一行;你可以用常规的旧for循环来做到这一点:

  for line in intfile:

这将遍历文件中的每一行,一次读取一行。在循环中,您可以访问每一行line。剩下的就是使用您提供的代码向您的网站发出请求。您丢失的那一位是所谓的“字符串插值”,它允许您使用其他字符串,数字或其他任何内容格式化字符串。在您的情况下,您希望将一个字符串(文件中的行)放在另一个字符串(URL)中。为此,您使用%s标志以及字符串插值运算符%

url = 'http://example.com/?id=%s' % line
A = json.load(urllib.urlopen(url))
print A

总而言之,你得到:

with open('my-file-name.txt') as intfile:
  for line in intfile:
    url = 'http://example.com/?id=%s' % line
    A = json.load(urllib.urlopen(url))
    print A

答案 3 :(得分:0)

Python 3 +

Python 3支持新的字符串格式设置,这是一种更具可读性和更好的格式化字符串的方式。 这是一本很好的文章,内容大致相同:Python 3's f-Strings

在这种情况下,可以将其格式化为

url = f"https://example.com/{id}"

详细示例

当您要将多个参数传递给URL时,可以按照以下步骤进行操作。

name = "test_api_4"
owner = "jainik@socure.com"

url = f"http://localhost:5001/files/create" \
f"?name={name}" \
f"&owner={owner}" \

我们在这里使用多个f字符串,并且可以将它们附加在'\'之后。这样会将它们保持在同一行中,而无需在它们之间插入任何换行符。

对于具有空格的值

对于这样的值,您应该在Python文件中导入from urllib.parse import quote,然后用引号引起来,例如:quote("firstname lastname")

这将用%20替换空格字符。