10

所以我是 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

4 回答 4

26

可以使用旧式字符串连接

>>> 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()
于 2012-06-21T05:17:18.187 回答
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
于 2012-06-21T05:19:39.707 回答
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
于 2012-06-21T05:21:31.147 回答
2

蟒蛇 3+

Python 3 支持新的字符串格式化,这是一种更易读、更好的格式化字符串的方法。这是一篇关于相同内容的好文章:Python 3's f-Strings

在这种情况下,它可以被格式化为

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

详细示例

当您想将多个参数传递给 URL 时,可以按如下方式完成。

name = "test_api_4"
owner = "jainik@test.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

于 2019-10-17T18:10:43.117 回答