怎么从一个 txt 文件里的一个表格信息提取出来

2015-11-01 03:20:05 +08:00
 czk1997

大概就是这样一个表格:
http://i.imgur.com/kBCekRl.png
表格的位置在 txt 中不固定,没有制表符……
表格内容数据也不固定……
怎样用 java 分析出这里有个表格然后吧数据提取出来呢?

4646 次点击
所在节点    Java
21 条回复
soratadori
2015-11-01 03:27:09 +08:00
这个表格每一个字段似乎是定长的,那就很简单了,直接分析每一行有多少个空格,大于一定数量的就判断为表。大概就这么个思路
lzxgh621
2015-11-01 03:31:49 +08:00
似乎只有最后一列数据有空格,前面的数据都没有空格。
kokutou
2015-11-01 07:55:17 +08:00
excel 直接打开然后选固定宽度,就 OK 了。 Java 分析的话,就找字母记宽度咯。
azuginnen
2015-11-01 09:10:56 +08:00
AWK 可破
plqws
2015-11-01 10:27:43 +08:00
按照第四行的 - 的长度来截取可破
Victor215
2015-11-01 10:30:28 +08:00
AWK +1
fengyqf
2015-11-01 11:38:30 +08:00
找规律,找规律后,你有无数的方法处理。
现成的工具,比如 awk , excel
自己写脚本,随便一种编程语言都行吧
wwjvtwoex
2015-11-01 12:41:04 +08:00
@plqws 然后写个正则表达式,其他语言也能共享
hantsy
2015-11-01 14:48:34 +08:00
这个好像宽度固定的啊,,,很好解决的吧。
jukka
2015-11-01 15:46:23 +08:00
C 里 fscanf 就可以了。
不过目测 awk 不超过 10 行代码。
iluhcm
2015-11-01 16:44:28 +08:00
正则,“\\s+”
jings
2015-11-01 16:49:27 +08:00
调用 shell 很快吧
czk1997
2015-11-02 09:11:42 +08:00
@hantsy 宽度没法固定的吧……
这个文件会变,如果某个字段比较长的话基本依靠宽度就全费了……
@iluhcm @wwjvtwoex 至于正则的话文件前面也有各种奇怪的空格和换行符,所以会影响判断……
@fengyqf 不让用 awk 这类第三方库……
fengyqf
2015-11-02 09:41:23 +08:00
@czk1997
再补充一个思路,该 txt 文件是谁生成的,能否拿到其源码或联系其开发人员,这样就不用费力的猜测规律了。
最主要的还是要“找规律”,只要规律确定,只是个按你所使用工具(或编程语言)的语法要求,按规律实现拆分即可。
tees
2015-11-02 09:53:03 +08:00
awk +1
wizardoz
2015-11-02 13:18:00 +08:00
我觉得 5 楼说的靠谱,根据第四行的-------分析出每列的宽度,然后截取。
iluhcm
2015-11-02 20:46:52 +08:00
@czk1997 trim 一下就解决了。
wwjvtwoex
2015-11-03 10:29:27 +08:00
表头高度固定 ?
第 1 列是序号?
czk1997
2015-11-05 04:23:52 +08:00
@wwjvtwoex 能确定的是第一列是序号……格式不会变了
czk1997
2015-11-05 04:24:20 +08:00
@fengyqf 这个应该不行……
只能自己找规律……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/232610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX