当前位置: 首页> 文旅> 旅游 > 正则表达式使用

正则表达式使用

时间:2025/8/27 0:16:51来源:https://blog.csdn.net/qq_45654781/article/details/141831804 浏览次数:0次

正则表达式符号含义

\s 匹配任何空白字符,包括空格、制表符(\t)、换行符(\n)、回车符(\r)、垂直制表符(\v)和换页符(\f)。
\S 是 \s 的否定形式,匹配任何非空白字符。
\d 匹配任何数字字符,等价于 [0-9].  表示任意字符
*  表示0个或多个字符
+  表示1个或多个字符

文本提取 示例代码

import re
import sysfrom utils.ocr_images_pdf import cno_ocr# 发文日期
def extract_date(text):date_pattern = r'\d{4}年\d{1,2}月\d{1,2}日'match = re.search(date_pattern, text)   #re.search 或 re.match 方法时,match 对象包含了匹配的结果。如果你没有使用任何捕获组(即圆括号 ()),那么 match.group(0) 就是整个匹配的字符串。return match.group(0) if match else None# 部门级别
def extract_department_level(text):level_pattern = r'市民政局.*?为(.+?)。'match = re.search(level_pattern, text)return match.group(1) if match else None# 部门职责
def extract_duties(text):# 提取主要职责部分'''''''''\s 匹配任何空白字符,包括空格、制表符(\t)、换行符(\n)、回车符(\r)、垂直制表符(\v)和换页符(\f)。\S 是 \s 的否定形式,匹配任何非空白字符。\d 匹配任何数字字符,等价于 [0-9]。.  表示任意字符*  表示0个或多个字符+  表示1个或多个字符'''duties_pattern = r'主要职责是:([\s\S]*?)第四条'match = re.search(duties_pattern, text)if match:duties_text = match.group(1).strip()# 统一文本中的括号类型# 将所有中英文括号替换为中文括号duties_text = duties_text.replace('(', '(').replace(')', ')')# print("Duties Text:\n", duties_text)  # 调试用,查看提取的职责文本# 定义可能的职责项标记delimiters = ['(一)', '(二)', '(三)', '(四)', '(五)','(六)', '(七)', '(八)', '(九)', '(十)','(十一)', '(十二)', '(十三)', '(十四)','(十五)', '(十六)']duties_list = []start_idx = 0for delimiter in delimiters:# 查找下一个职责项的起始位置next_idx = duties_text.find(delimiter, start_idx)if next_idx == -1:break# 提取当前职责项的内容duty_content = duties_text[start_idx:next_idx].strip()if duty_content:duties_list.append(duty_content)# 更新开始位置start_idx = next_idx# 处理最后一个职责项last_duty_content = duties_text[start_idx:].strip()if last_duty_content:duties_list.append(last_duty_content)# 去除可能的多余空白字符formatted_duties = [duty.strip() for duty in duties_list if duty.strip()]# print("Duties List:\n", formatted_duties)return formatted_dutiesreturn []# 内设机构职责
def extract_institutions(text):# 提取内设机构部分institutions_pattern = r'第四条市民政局设下列内设机构:([\s\S]*?)第五条'match = re.search(institutions_pattern, text)if match:institutions_text = match.group(1).strip()# 统一文本中的括号类型# 将所有中英文括号替换为中文括号institutions_text = institutions_text.replace('(', '(').replace(')', ')')# 定义可能的机构项标记delimiters = ['(一)', '(二)', '(三)', '(四)', '(五)','(六)', '(七)', '(八)', '(九)', '(十)','(十一)', '(十二)', '(十三)', '(十四)','(十五)', '(十六)']institutions_dict = {}start_idx = 0for delimiter in delimiters:# 查找下一个机构项的起始位置next_idx = institutions_text.find(delimiter, start_idx)if next_idx == -1:break# 提取当前机构项的内容institution_content = institutions_text[start_idx:next_idx].strip()     # 在Python中,.strip() 是一个字符串方法,用于删除字符串两端的空白字符(包括空格、制表符、换行符等)。如果需要,也可以指定要删除的字符。if institution_content:# 分割机构名称和职责描述parts = institution_content.split('。', 1)if len(parts) == 2:name, desc = partsinstitutions_dict[name.strip()] = desc.strip()else:name = parts[0].strip()institutions_dict[name] = ''# 更新开始位置start_idx = next_idx + len(delimiter)# 处理最后一个机构项last_institution_content = institutions_text[start_idx:].strip()if last_institution_content:# 分割机构名称和职责描述parts = last_institution_content.split('。', 1)if len(parts) == 2:name, desc = partsinstitutions_dict[name.strip()] = desc.strip()else:name = parts[0].strip()institutions_dict[name] = ''# 去除可能的多余空白字符formatted_institutions = {k: v.strip() for k, v in institutions_dict.items() if k.strip()}return formatted_institutionsreturn {}class db_sql:"""SQL语句'INSERT INTO "compare_department_duty_summary"(department_name,department_duty,act_id,\instance_id,summary_text,score,type, create_time, id) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s)'"""department_duty_insert_sql = 'INSERT INTO "department_duty"(department_name,department_duty) VALUES (%s,%s)'def extract_department_duty():# 1 从PDF中提取文字内容filePath = ''save_dir = '../data/tmp_check_data/tem_test/'text = cno_ocr(filePath, save_dir)# 2 从文本内容中提取部门及其职责# text = ('')# 调用函数# 提取日期date = extract_date(text)# 提取部门级别department_level = extract_department_level(text)# 提前部门职责duties = extract_duties(text)# 提取内设机构职责institutions = extract_institutions(text)# 提取编制信息compilation = extract_compilation(text)if "__main__" == __name__:extract_department_duty()
关键字:正则表达式使用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: