所以我是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,并连续显示值。是否可以执行此操作?
如果有人可以帮助我,我将非常感激!
可以使用旧式字符串连接
>>> 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()
懒惰的风格:
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
您要做的第一件事是知道如何从文件中读取每一行。首先,您必须打开文件;您可以使用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
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
替换空格字符。