import os import re import glob import numpy as np import pandas as pd import jieba from collections import defaultdict # ==================== # 第一步:配置参数 # ==================== # 文件路径配置 RAW_FOLDER = "C:/Users/Dawning.Y/Desktop/年报/TXT" PROCESSED_FOLDER = "C:/Users/Dawning.Y/Desktop/年报" STOPWORDS_FOLDER = "C:/Users/Dawning.Y/Desktop/年报/停用词表" # 设置文件夹路径 RAWREPORTSFOLDER = "C:/Users/Dawning.Y/Desktop/年报/TXT" # 修改为您的年报文件夹路径 # 定义公司代码和名称 companies = { "002074": "国轩高科", "002594": "比亚迪", "300014":"亿纬锂能", "300438":"鹏辉能源", "300750":"宁德时代" # 添加其他公司代码和名称 } # 获取所有年报文件 reportfiles = [] for code, name in companies.items(): for year in range(2021, 2025): # 根据需要调整年份范围 pattern = f"{code}{name}{year}.txt" reportfiles.extend(glob.glob(os.path.join(RAWREPORTSFOLDER, pattern))) # 现在reportfiles列表包含了所有匹配的文件路径 # 正则表达式配置 PATTERNNS = { # 页眉页脚模式(示例,需根据实际文本调整) 'header_footer': [ r'(?:[^\s]{2,}(?:公司|集团)\s+\d{4}\s+年度报告(?:全文)?[\s\|]+第\d+页)',
时间: 2025-08-18 15:37:00 AIGC 浏览: 27
<think>好的,用户正在处理年报的TXT文件,需要用Python脚本配置文件路径、正则表达式和数据结构。首先,我需要考虑如何设置文件路径,确保脚本能找到正确的输入目录和输出目录。可能需要用os模块来处理路径,尤其是跨平台兼容性,比如使用os.path.join。
接下来是正则表达式部分。年报文本可能有很多噪音,比如多余的空格、特殊符号或者乱码。用户需要清洗这些数据。例如,匹配连续的空格,可以用\s+,但要注意保留英文之间的空格。同时,可能需要去除中文之间的多余空格,可以用[\u4e00-\u9fa5]来匹配中文字符,并在它们之间替换空格。另外,处理特殊符号,比如书名号或者奇怪的字符,可能需要用正则表达式过滤掉。
然后是数据结构的选择。用户需要存储清洗后的文本,可能用字符串变量直接保存。如果要统计词频,可以用collections模块的Counter,或者用pandas DataFrame来整理结果。比如分词后统计关键词频率,生成表格。
还需要考虑编码问题,TXT文件可能是gbk或utf-8,所以打开文件时要指定正确的编码,避免乱码。异常处理也很重要,比如捕获文件找不到的错误。
用户可能还需要提取特定信息,比如公司名称、财务数据,这时候需要更复杂的正则表达式模式,比如匹配“公司名称:”后面的内容。或者使用正则表达式来识别日期、金额等格式。
最后,配置参数部分,用户可能需要将路径、正则表达式模式、关键词等作为变量放在脚本开头,方便修改。比如INPUT_DIR和OUTPUT_DIR,还有清理模式的正则表达式列表。
可能的问题点包括正则表达式不够全面,比如漏掉某些情况,或者文件路径错误。需要测试不同的年报样本,确保脚本健壮。另外,处理大文件时要注意内存使用,可能需要逐行读取处理。
总结步骤应该是:配置路径→读取文件→应用正则表达式清洗→保存结果。数据结构根据具体需求选择,比如字典存储统计结果,列表存储处理后的文本行等。</think>### 文件路径配置
1. **输入输出路径设置**
使用`os`模块处理跨平台路径兼容性问题,示例:
```python
import os
INPUT_DIR = os.path.join("data", "annual_reports") # 年报文件存放目录
OUTPUT_DIR = os.path.join("processed_data") # 清洗后文件输出目录
os.makedirs(OUTPUT_DIR, exist_ok=True) # 自动创建输出目录
```
2. **文件遍历方法**
通过`glob`模块实现批量文件处理:
```python
import glob
file_paths = glob.glob(os.path.join(INPUT_DIR, "*.txt")) # 获取所有TXT文件路径
```
---
### 正则表达式配置
1. **基础清洗模式**
处理常见文本噪声:
```python
CLEAN_PATTERNS = [
(r'\s+', ' '), # 合并连续空白字符
(r'[^\u4e00-\u9fa5a-zA-Z0-9,。!?%、]', ''), # 保留中英文数字及常用标点
(r'(?<![a-zA-Z])\s+(?![a-zA-Z])', ''), # 删除中文间多余空格[^3]
]
```
2. **高级提取模式**
匹配年报结构化数据:
```python
COMPANY_NAME_PATTERN = r'公司名称[::]\s*([^\n]+)' # 提取公司名称
FINANCIAL_DATA_PATTERN = r'净利润\s*[::]\s*([\d,.]+万元)' # 提取财务数据
```
---
### 数据结构设计
1. **文本处理流水线**
使用字典存储处理结果:
```python
processing_pipeline = {
"raw_text": "", # 原始文本
"cleaned_text": "", # 清洗后文本
"keywords": [], # 提取的关键词
"financial_data": {} # 结构化财务数据
}
```
2. **数据持久化结构**
使用`pandas`保存结构化结果[^2]:
```python
import pandas as pd
results = []
for file in file_paths:
# ...处理逻辑...
results.append({
"文件名": os.path.basename(file),
"公司名称": extracted_company,
"净利润": extracted_profit
})
df = pd.DataFrame(results)
df.to_csv(os.path.join(OUTPUT_DIR, "financial_report.csv"), index=False)
```
---
### 完整脚本框架
```python
import re
import os
import glob
import pandas as pd
# 配置参数
INPUT_DIR = os.path.join("data", "annual_reports")
OUTPUT_DIR = "processed_data"
CLEAN_PATTERNS = [...] # 前述正则表达式模式
def text_cleaner(text):
for pattern, replacement in CLEAN_PATTERNS:
text = re.sub(pattern, replacement, text)
return text.strip()
def process_reports():
os.makedirs(OUTPUT_DIR, exist_ok=True)
file_paths = glob.glob(os.path.join(INPUT_DIR, "*.txt"))
results = []
for file_path in file_paths:
try:
with open(file_path, 'r', encoding='utf-8') as f:
raw_text = f.read()
cleaned_text = text_cleaner(raw_text)
company_match = re.search(COMPANY_NAME_PATTERN, cleaned_text)
results.append({
"文件名": os.path.basename(file_path),
"公司名称": company_match.group(1) if company_match else None,
"清洗后文本": cleaned_text[:200] + "..." # 存储摘要
})
except UnicodeDecodeError:
print(f"编码错误: {file_path}")
pd.DataFrame(results).to_csv(
os.path.join(OUTPUT_DIR, "processed_summary.csv"),
index=False,
encoding='utf-8-sig'
)
if __name__ == "__main__":
process_reports()
```
---
阅读全文
相关推荐

















