44 导入与导出
词汇表
| 函数 | 说明 |
|---|---|
Import[loc] |
从外部位置导入 |
WebImageSearch["keyword"] |
通过关键词在网络上获取图片 |
ResourceData["name"] |
从 Wolfram 数据库获取数据 |
SendMail[expr] |
发送电子邮件 |
CloudExport[expr,format] |
以特定格式导出到云端 |
Export[file,expr] |
导出到文件 |
Printout3D[source,"service"] |
将源发送到 3D 打印服务 |
到目前为止,所展示的内容都在 Wolfram 语言和 Wolfram 知识库中完成。
但有时需要从外部获取数据。
可以预见,它们往往不会像 Wolfram 语言内部的数据那样干净有序
------而且它们可能会随时发生变化。
导入
第一个例子,从联合国网站首页导入前面的文本。
可以使用函数 Import 来做到这一点。
导入联合国网站首页的文本版本:
wl
In[]:=Import["https://un.org"]
原始输出内容较长,仅显示前几行:

结果是一个字符串,包含一些空行。
文本预处理
按行分割
先把字符串按换行拆分。
在换行处分割以获得字符串列表:
wl
In[]:=StringSplit[Import["https://un.org"], "\n"]

清洗
wl
StringReplace[StringSplit[Import["https://un.org"], "\n"],
Whitespace ~~ Whitespace .. -> " "] /. " " -> Nothing

现在看上去整洁多了。
多语言识别
识别每个字符串的语言:
wl
In[]:=LanguageIdentify[%]

获取超链接
Import 允许你导入各种不同的元素。
Hyperlink 会获取网页上出现的超链接;
获取联合国网站首页的超链接列表:
wl
In[]:=Import["https://un.org", "Hyperlinks"]

获取图像
"Images" 会获取图像。
获取维基百科主页上出现的图片:
wl
In[]:=Import["https://wikipedia.org", "Images"]

网站图谱
作为更复杂的例子,下面是Stephen Wolfram个人网站链接的图谱。
为保持可管理性,我在每一层只取前 5 个链接,并且只深入 3 层。
计算网站部分超链接图:
wl
In[]:=NestGraph[Take[Import[#, "Hyperlinks"], 5] &, "https://stephenwolfram.com", 3]

网站截图
如果想获取网页在浏览器窗口中的截图,可以使用 WebImage。
获取当前 Wolfram 网站页面顶部的图片:
wl
In[]:=WebImage["https://wolfram.com"]

可以对这张图像进行操作,例如替换颜色:
wl
In[]:=ColorReplace[%,Black->Orange]

更多导入格式
Wolfram 语言可以导入数百种格式------包括电子表格、图像、音频、视频、几何、数据库、日志文件、PDF 等。
Import 会自动查看文件扩展名(.png、.xls 等)来确定要做什么。
图片
从网站导入一张图片:
wl
In[]:=Import["https://bkimg.cdn.bcebos.com/pic/faf2b2119313b07eca803d93f98c8\
62397dda04426ae?x-bce-process=image/format,f_auto/resize,m_lfit,limit_\
1,h_500"]

使用机器学习函数,进行人物识别:
wl
In[]:=Classify["NotablePerson", %]

除了从网页导入,Import 也可以从存储在你计算机系统或 Wolfram 云中的本地文件导入。
网络图像搜索
Wolfram 语言不仅处理具体的网页和文件,还可以进行诸如搜索网络之类的操作。
使用关键词colorful birds在网络上搜索图像:
wl
In[]:=WebImageSearch["bird", 4]

它们被识别为不同种类的鸟类:
wl
In[]:=ImageIdentify /@ %

Wolfram 数据库
外部数据的一个重要来源是 Wolfram 数据库(Wolfram Data Repository)。
该仓库中的数据来自许多地方------但都已设置为便于在 Wolfram 语言中使用。
你可以通过浏览 Wolfram 数据库来查看可用内容。

一旦找到想要的条目,只需使用 ResourceData["name"] 将其导入 Wolfram 语言。
获取达尔文《物种起源》的全文,然后对其生成词云:
wl
In[]:=WordCloud[ResourceData["On the Origin of Species"]]

发送邮件
除了导入,Wolfram 语言还可以将内容发送出去。
例如,SendMail 可以从 Wolfram 语言发送电子邮件。
发送一封邮件:
wl
In[]:=SendMail["Hello from the Wolfram Language!"]
向测试账户发送主题为 "Wolf" 并附带一张狼的图片的邮件:

注
发送邮件需要在
偏好设置 > Internet & Mail > Mail Settings进行设置,配置本地SMTP服务器。
导出
导出云对象
如果你想与外部程序和服务交互,经常需要从 Wolfram 语言导出数据。
将一个圆的图形以 PDF 格式导出到云端:
wl
In[]:=CloudExport[Graphics[Circle[]], "PDF"]
Out[]=CloudObject["https://www.wolframcloud.com/obj/bf984580-7678-4f6e-9372-f393bce41a37"]
导出本地对象
可以使用 Export 导出到本地文件。
将质数及其幂的表导出到本地电子表格文件:
wl
In[]:=Export["primepowers.xls", Table[Prime[m]^n, {m, 10}, {n, 4}]]
Out[]="primepowers.xls"
注
桌面版可以在输出结果下方找到打开文件目录找到文件所在路径。
下面是生成文件的一部分内容:
将文件内容导回 Wolfram 语言:
wl
In[]:=Import["primepowers.xls"]
Out[18]=["Graphics3D"]]
Out[]={{{2., 4., 8., 16.}, {3., 9., 27., 81.}, {5., 25., 125., 625.}, {7.,
49., 343., 2401.}, {11., 121., 1331., 14641.}, {13., 169., 2197.,
28561.}, {17., 289., 4913., 83521.}, {19., 361., 6859.,
130321.}, {23., 529., 12167., 279841.}, {29., 841., 24389.,
707281.}}}
导出格式
Wolfram 语言可以导入和导出许多不同类型的格式。
导出3D打印
以适合 3D 打印的格式导出 3D 几何体:
wl
In[19]:=Export["spikey.stl",
Entity["Polyhedron", "RhombicHexecontahedron"]
下面是从 spikey.stl 文件进行 3D 打印的结果:
为 3D 打印创建适当的几何形状可能相当复杂。
函数 Printout3D 可以自动完成所有步骤
------它也可以将最终几何发送到 3D 打印服务
(或者如果你有的话,发送到你自己的 3D 打印机)。
生成一堆随机的小球:
wl
In[]:=Graphics3D[Sphere[RandomReal[5, {30, 3}]]]

将其发送到 Sculpteo 服务进行 3D 打印:
wl
In[]:=Printout3D[%, "Sculpteo"]

