如何逐字逐句地从 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",""))
我有一个 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",""))