【发布时间】:2020-05-23 21:44:12
【问题描述】:
我有一个只包含一个列表的 url。例如,路径 https://somepath.com/dev/doc/72 简单返回(无 html 代码):
[
"A/RES/72/1",
"A/RES/72/2",
"A/RES/72/3",
"A/RES/72/4"
]
我想获取全部内容(包括方括号)并将其制成一个列表。手动完成,我可以像这样复制/粘贴为列表:
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的解决方案(https://stackoverflow.com/a/60119016/10764078):
import requests
docs = requests.get('https://somepath.com/dev/doc/72').json()
我将阅读 JSON。
【问题讨论】:
-
ast.literal_eval()能解决问题吗? -
@AMC:在给出的示例中失败。
-
你试过
a.append(line.decode('utf-8'))吗?