所以我是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并持续显示值。有没有办法做到这一点?
如果有人可以帮助我,我将非常感激!
答案 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
替换空格字符。