Java实现读取本地txt文件(行政区划制作层级标记表格)

首先接到的是一个网址,地址是http://www.zxinc.org/gb2260.html
但这个网址后来就没用了,服务器那边应该出问题了,不过还好我保存到本地了。

再放一个云盘

链接:https://pan.baidu.com/s/1Hkf2PtRGK3dLQ50tJ1mk4g
提取码:unon

这里我是将那个页面打开查看源码然后复制下来的,所以前面带了一个
,这里的每行是由区划代码、区划名称构成。这里一共有6976行

我的需求是将这份文本做成excel,并分成三列,1列放区划代码,2列放名称,3列需要自家根据区划代码来标记区划层级,如省级则标记1,市级标记2,县级标记3.

这里我没有用一套流程走到底,excel表格也是我直接手动创建并粘贴数据上去的。我只需要在文本中过滤出我想要的数据并打印到控制台,只要行数是正确的,一列列粘贴到excel表格上是可以的。其实也可以写一个方法来写入至excel,但那样效率低,没必要。

好了直接贴代码,这里我直接是写在main方法里了,我直接将main方法复制下来。有一部分代码暂时不会用到,我将其注释掉了,等需要用时我会打开注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static void main(String[] args) {
File file = new File("D:\\xzqh.txt"); //源文本
// File file = new File("D:\\code.txt"); //代码+标记文本
BufferedReader br = null;
StringBuffer sb = null;
try {
//在字节流的基础上套用InputStreamReader转换为字符流
br = new BufferedReader(new InputStreamReader(new FileInputStream(file.getPath()), "GBK"));
sb = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//打印文件的所有内容
System.err.println(new String(sb));

讲一下整体思路吧,我们得到的结果是有三列的Excel表格,所以我们一列一列的走,先拿到他的区划代码

然后接下来是步骤

**1.**将上面的代码运行,注意文件位置是对的,正确运行的话应该是下面的样子,这是没有换行的,不过这个影响不大。

将 打印所有内容 那行代码注释掉,因为我们不需要打印所有,只需要将区划代码打印出来;并将下面的注释打开,如图

再次运行程序,打印台输出区划代码,同样是6976行(总行数),将其复制粘贴至excel的第一列

**2.**根据行政区划做标记省级为XX0000,市级为XXX000或XXXX00,县级为XXXXXX或XXXXX0,层级标记的是数字,所以,但是区划也是数字,在这里不好区分开,所以暂时用ABC代替123,便于过滤。

将 直接输出 那行代码注释,如图,其他则不变。这段代码是根据区划代码在后面加上标记

输出如图:这里的000000是中华人民共和国,因为只有一个,所以我这里不做判断

然后将打印台内容全选放入一个新的txt文本,取名code.txt。里面保存的是行政区划+区划标记的文本。(先暂时存放,后面还需要用到)

**3.**将 处理追加字符下面这段代码注释掉,打开 直接输出 的注释,如图

然后将过滤条件更换成匹配中文,然后将 直接输出 这行代码注释掉,将蓝色部分代码的注释打开。这里解释一下为什么已经匹配了中文还需要这么麻烦地对比字符,这是因为有些地名实在是千奇百怪,直接匹配地名,会导致匹配出来行数对不上,也就是数据有问题,所以才这样走一遍的:

然后直接输出,打印台是这样的,复制到Ecel,这样就拿到第二列的区划名称

4.读取刚才的code.txt,注意路径。并将以下代码如图注释掉。这里匹配字母然后选择过滤后直接输出!

记得将上面的读取的文件替换成code.txt,将code处理这段注释打开,

打印出一串字母+数字组合,再将以下打印台输出的额所有内容复制到code.txt,再更换过滤条件,单独将数字取出

过滤后直接输出即可,不需要处理什么,注意运行前记得把匹配的6为数字改成1位

控制台输出:

将其复制粘贴至Excel中即可。注意1开始是从北京市开始的,而不是从中华人民共和国开始。

逻辑有点乱,下次好好梳理


Java实现读取本地txt文件(行政区划制作层级标记表格)
https://zhouyinglin.cn/post/49197122.html
作者
小周
发布于
2022年8月6日
更新于
2022年12月15日
许可协议