数据整理(裁判文书)

处理的必要

在上一次的博客中,我们写了如何对网站的数据进行爬取。这是其中一篇爬取到的结果:

可以看到,从网站上爬取到的数据虽然全部文本格式的内容,但是很杂乱,很多的地方都多了莫名其妙的空格。所以我们需要对数据进行一定的处理,使文本看起来稍微规范化一些

处理的过程

首先空格是必须要全部删去的,很多地方添加了莫名其妙的空格。

     # 去除所有空格和全角空格
     text_without_spaces = text.replace(" ", "").replace(" ", "")

通过这段代码几乎就可以把全部的空格给除去了。

然后我们需要将文件号和后面的相关信息进行分行操作,那么怎么进行分行呢?

我们可以发现,每个文本中都详细信息的开头都是“当事人”这个字符串,所以我们可以通过匹配第一个出现的“当事人”字符串然后在它的前面添加换行符来实现。

     # 查找第一个出现的 "当事人" 的位置
     index = text_without_spaces.find("当事人")
 ​
     # 插入换行符
     if index != -1:
         text_end_1 = text_without_spaces[:index] + "\n" + text_without_spaces[index:]
     else:
         text_end_1 = text_without_spaces

这样以后,我们的处理还是不够的,我们还需要把相关信息和文书正文给分开。具体怎么分呢?

观察发现每个文书正文的开始都有一段字符串“(案件来源、调查经过及采取行政强制措施的情况)”,这段字符串就是我们分开相关信息和正文的核心逻辑!

     index_next = text_end_1.find("(案件来源、调查经过及采取行政强制措施的情况)")
 ​
     if index_next != -1:
         text_end_2 = text_end_1[:index_next] + "\n" + text_end_1[index_next:]
     else:
         text_end_2 = text_end_1

这样就很好的完成了文本的数据处理!

结果如下:

这样看起来就比之前的文本内容好了许多!

自动化的实现

这样处理好单个文本肯定是不够的,现在我们需要对文本进行批量化处理,处理逻辑大致如下:

 # 设置2024文件夹路径
 folder_path = 'F:/python_code/2024'
 ​
 # 遍历2024文件夹中的所有txt文件
 for filename in os.listdir(folder_path):
     if filename.endswith('.txt'):
         file_path = os.path.join(folder_path, filename)
 ​
         # 读取文件内容
         with open(file_path, 'r', encoding='utf-8') as file:
             text = file.read()
 ​
         # 处理文本
         processed_text = process_text(text)
 ​
         # 将处理后的内容保存回文件或另存为新文件
         new_file_path = os.path.join(folder_path, 'processed_' + filename)
         with open(new_file_path, 'w', encoding='utf-8') as file:
             file.write(processed_text)
 ​
 print("处理完成。")

循环遍历2024文件夹下的所有txt文件,然后读取文件的内容,

 def process_text(text):
     # 去除所有空格和全角空格
     text_without_spaces = text.replace(" ", "").replace(" ", "")
 ​
     # 查找第一个出现的 "当事人" 的位置
     index = text_without_spaces.find("当事人")
 ​
     # 插入换行符
     if index != -1:
         text_end_1 = text_without_spaces[:index] + "\n" + text_without_spaces[index:]
     else:
         text_end_1 = text_without_spaces
 ​
     index_next = text_end_1.find("(案件来源、调查经过及采取行政强制措施的情况)")
 ​
     if index_next != -1:
         text_end_2 = text_end_1[:index_next] + "\n" + text_end_1[index_next:]
     else:
         text_end_2 = text_end_1
 ​
     return text_end_2

这就是其中调用的process_text函数,

最后将文件保存为'processed_' + filename。

这是对2024文件的处理,然后再依次对2019-2023年的文件进行一次处理即可!

最后的最后,我们可以把2024文件夹中不以‘processed_’开头的文件删除即可

 import os
 ​
 # 设置2024文件夹路径
 folder_path = 'F:/python_code/2024'
 ​
 # 遍历2024文件夹中的所有txt文件
 for filename in os.listdir(folder_path):
     if filename.endswith('.txt') and not filename.startswith('processed_'):
         file_path = os.path.join(folder_path, filename)
         os.remove(file_path)
         print(f"已删除文件: {filename}")
 ​
 print("删除完成。")

结果如下:

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值