Python如何使用一行导入和使用模块

Jer*_*ov2 4 python string url import python-import

我的问题是一个相当直截了当的问题.我有这个代码从互联网上加载天然气储存数量.

from urllib.request import urlopen
print(int(str(urlopen("http://ir.eia.gov/ngs/wngsr.txt").read()).split("\\n")[4].split(" ")[2]))
Run Code Online (Sandbox Code Playgroud)

我想知道的是,我怎么能在一行中做到这一点?更具体地说,我想知道如何摆脱导入线并做这样的事情:

print(int(str(urllib.request.urlopen("http://ir.eia.gov/ngs/wngsr.txt").read()).split("\\n")[4].split(" ")[2]))
Run Code Online (Sandbox Code Playgroud)

(我将urlopen调用更改为urllib.request.urlopen)它有点像Java,如果使用完全限定名,则不需要import语句.你知道怎么办?谢谢!

mni*_*ber 11

在尝试 Zizouz212 的建议时,我发现这有效

print(int(str(__import__('urllib').request.urlopen("http://ir.eia.gov/ngs/wngsr.txt").read()).split("\\n")[4].split(" ")[2]))
Run Code Online (Sandbox Code Playgroud)


Ziz*_*212 6

你总是需要导入,但你仍然可以使用分号来分隔语句,但为什么要这样做呢??!?!?

from urllib.request import urlopen; print(int(str(urllib.request.urlopen("http://ir.eia.gov/ngs/wngsr.txt").read()).split("\\n")[4].split(" ")[2]))
#              note the semi-colon ^
Run Code Online (Sandbox Code Playgroud)

  • 为什么要这么做?在 shell 中运行命令。这是我几乎每天都使用的 oneliner 来计算接受字符串内换行符的文件中的 csv 记录总数: cat *.csv | python -c“导入csv;导入系统;打印(sum(1 for i in csv.reader(sys.stdin)))” (5认同)