看来你在处理 TXT 文档时遇到了些麻烦,但别担心,我们一起来捋一捋这个问题!首先,让我用幽默的方式告诉你,像把鱼放在锅里煮,总会有些蒸汽冒出来。但如果锅的盖子没盖好,水就会溅得到处都是,对吧?这就和你的代码一样,有可能是在某些环节出问题了。
从你描述的问题来看,报告文本内容的缺失可能是因为你在读取文件或处理文本时发生了错误。下面我将提供一些可能的解决方案和改进建议:
1. **确保读取内容的完整性**:
确保你打开文件时所用的编码(`encoding='utf-8'`)与实际文件的编码一致,如果不一致可能导致内容读取不全。尝试使用 `errors='replace'` 或 `errors='ignore'` 来查看是否能解决部分问题。
2. **检查正则表达式**:
你的代码中使用了 `re.sub(r'', '', content)`,但正则表达式为空,这样无论是想要替换什么都不会有变化。这可能是个错误,可以去掉这个处理,或者按实际需要设置正则表达式。
3. **数据收集的完整性**:
在 `data.append()` 的地方,确保你传入的是一个包含股票代码、年份和内容的元组或列表。根据你的需求,可以像下面这样进行修改:
data.append((stock_code, report_year, content))
4. **构建 DataFrame 的列名**:
在创建 DataFrame 时,需给定列名。可以这样做:
columns = ['Stock Code', 'Year', 'Report Content']
df = pd.DataFrame(data, columns=columns)
5. **遍历所有文件**:
你的代码中缺少完整定义 `all_files` 和 `data` 的部分。可以通过 `os.listdir()` 获取目录中的所有文件,并初始化 `data` 为一个空列表:
all_files = os.listdir(directory)
data = []
综上所述,我给你整合了以下更正后的代码供你参考:
import os
import pandas as pd
import re
# 定义文件存储的目录
for i in range(12, 24):
directory = "XXXXXXX" # 修改为你的 txt 文件存放路径
output_excel = 'XXXXXX.xlsx' # 修改为你的输出 Excel 文件名
all_files = os.listdir(directory)
data = []
for file in all_files:
# 解析文件名获取股票代码和报告年份
parts = file.split('_')
stock_code = parts[0] # 假设股票代码在第一个位置
report_date = parts[1].split('.') # 假设日期格式为YYYY-MM-DD
report_year = report_date[0] # 取得年份部分
# 读取文件内容
with open(os.path.join(directory, file), 'r', encoding='utf-8', errors='replace') as f:
content = f.read()
# 将解析的数据添加到列表中
data.append((stock_code, report_year, content))
# 使用Pandas创建DataFrame
columns = ['Stock Code', 'Year', 'Report Content']
df = pd.DataFrame(data, columns=columns)
# 将DataFrame写入Excel文件
with pd.ExcelWriter(output_excel, engine='openpyxl') as writer:
df.to_excel(writer, index=False, sheet_name='Sheet1')
print(f'文件已合并到 {output_excel}')
希望这些调整能帮助你顺利完成任务!如果再有什么疑问,随时问我哦!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |