在url中传递变量?

问题描述 投票:7回答:4

所以我是python的新手,我非常需要帮助。

我有一个文件,其中包含一堆用'em编写的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,并连续显示值。是否可以执行此操作?

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

python json url urllib urlopen
4个回答
17
投票

可以使用旧式字符串连接

>>> 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()

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

new 2.7 +:

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

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

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

0
投票

Python 3 +

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

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

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

详细示例

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

name = "test_api_4"
owner = "[email protected]"

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

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

对于有空格的值

对于这样的值,您应该在您的python文件中导入from urllib.parse import quote,然后用类似quote("firstname lastname")的字符串引用:>

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

© www.soinside.com 2019 - 2024. All rights reserved.