从Web导入Mathematica中的表 – 空单元格问题

从Web导入Mathematica中的表 – 空单元格问题,第1张

概述我用: 数据=导入[ “HTTP:// WEBURL /”, “数据”] 从一个站点导入数据.在该页面上有表格.这将创建嵌套列表,您可以轻松地以表格形式获取数据.例如: 网格[数据[[1]]] 会给出这样的东西: Player Age Shots Goals P1 24 10 2 P2 22 5 0 P3 28 11 1 . 我用:
数据=导入[ “http:// WEBURL /”,“数据”]
从一个站点导入数据.在该页面上有表格.这将创建嵌套列表,您可以轻松地以表格形式获取数据.例如:
网格[数据[[1]]]
会给出这样的东西:
Player Age Shots Goals  P1    24    10    2   P2    22     5    0  P3    28    11    1  ...

现在,这是问题所在.如果HTML表中的一个单元格为空,例如“Age”的条目,那么在HTML中,这将是这样的:< td>< / td>. Mathematica根本不包括它在列表中,甚至不包括,例如,“Null”值.相反,这一行只是由长度为3的列表表示,数据将被移动一列,因此您将获得“镜头”代替“年龄”和“目标”而不是“镜头”和“目标” “会空的.
例如,年龄未知的“P4”(HTML表中的空单元格),有10个镜头并且得分为0的目标将被导入为长度3而不是4的列表并且移动一个:

Player Age Shots Goals  P1    24    10    2   P2    22     5    0  P3    10     0    ...

这会带来一个难题,因为如果您有一些空字段,那么您无法从列表中分辨出它属于哪一列.在Mathematica中导入时,有没有办法在HTML表中的空单元格上放置“Null”?例如,列表中的P4元素将如下所示:
数据[[1,5]]
{ “P4”,“空”,10,0}
代替:
{ “P4”,0}

解决方法 正如lumeng指出的那样,您可以使用FullData来正确填写HTML表元素.这是一个更简单的说明.
in = importString["\<<HTML><table>   <tr>   <td>(1,1)</td>   <td>(1,2)</td>   <td>(1,3)</td>   </tr>   <tr>   <td>(2,1)</td>   <td></td>   <td>(2,3)</td>   </tr>   </table></HTML>\>",{"HTML","FullData"}];GrID[in[[1,1]]]

如果您想要更完整地控制输出,我建议您将页面导入为XML.这是一个例子.

in = importString["\<<HTML><table>    <tr>    <td>(1,1)</td>    <td>(1,2)</td>    <td>(1,3)</td>    </tr>    <tr>    <td>(2,1)</td>    <td></td>    <td>(2,3)</td>    </tr>    </table></HTML>\>","XML"];Column[Last /@ Cases[in,XMLElement["td",___],Infinity]]

您需要阅读一般的XML和Mathematica的版本,即XMLObject.但是,一旦掌握了它,它就会很愉快.

总结

以上是内存溢出为你收集整理的从Web导入Mathematica中的表 – 空单元格问题全部内容,希望文章能够帮你解决从Web导入Mathematica中的表 – 空单元格问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1137474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存