如何逐字逐句地从 url 中读取列表?

How to read from a url directly as a list verbatim?

我有一个 url,其中只包含一个列表。例如,路径 https://somepath.com/dev/doc/72 returns 简单(没有 html 代码):

[
  "A/RES/72/1", 
  "A/RES/72/2", 
  "A/RES/72/3", 
  "A/RES/72/4"
]

我想把全部内容(包括方括号)做成一个列表。手动完成,我可以 copy/paste 作为这样的列表:

docs = [
  "A/RES/72/1", 
  "A/RES/72/2", 
  "A/RES/72/3", 
  "A/RES/72/4"
]
print(docs)
['A/RES/72/1', 'A/RES/72/2', 'A/RES/72/3', 'A/RES/72/4']

我想将 url 的内容传递给列表。

我尝试了以下

link = "https://somepath.com/dev/doc/72"
f = urlopen(link)
myfile = f.read()
print(myfile)
b'[\n  "A/RES/72/1", \n  "A/RES/72/2", \n  "A/RES/72/3", \n  "A/RES/72/4"\n]\n

新行乱七八糟,不是列表。

我猜我必须解析每一行,删除 \n 字符,或者像这样: file.read().splitlines() ,但是对于这样一个简单的输入来说,这似乎过于复杂了。

我见过很多解析 .csv 文件、从每一行读取输入等的解决方案。但是没有什么可以处理已经创建并且只需要调用的列表。感谢您的帮助和指点。

编辑: 我试过这个:

import urllib.request  # the lib that handles the url stuff
link = "https://somepath.com/dev/doc/72"
a=[]
for line in urllib.request.urlopen(link):
    print(line.decode('utf-8'))
    a.append(line)

a

print 命令给了我接近我想要的东西。但是 append 命令又让我一团糟:

[b'[\n',
 b'  "A/RES/72/1", \n',
 b'  "A/RES/72/2", \n',
 b'  "A/RES/72/3", \n',
 b'  "A/RES/72/4"\n',
 b']\n']

编辑:原来 url 服务于 JSON。以下 fuglede 的解决方案 ():

import requests
docs = requests.get('https://somepath.com/dev/doc/72').json()

我要阅读 JSON。

假设网站发送给您的是 JSON,requests,这可以通过

获得
import requests
docs = requests.get('https://somepath.com/dev/doc/72').json()

这适用于您提供的示例:

ast.literal_eval(str(myfile)[2:-1].replace("\n",""))