1. 提取资产负债表中的总资产
任务说明
从资产负债表文本中提取“总资产”项目对应的数值,并完成单位归一化处理(如“亿元”转“元”)。输入为一段包含总资产信息的财报文本,输出为标准化后的总资产数值(单位:元)。
实现方案
使用正则表达式匹配“总资产”关键词后的数值与单位,再按单位换算系数统一转为“元”。代码支持“元”“万元”“亿元”三种常见单位,并兼容数字中的逗号分隔符。
核心代码
import re
def extract_total_assets(text):
"""
从财报文本中提取总资产数值并转换为元。
返回 (数值, 单位) 或 None(未找到时)。
"""
# 匹配模式:总资产后可能出现冒号、空格等,再捕获数字(含逗号)与单位
pattern = r'总资产[::为是]?\s*([\d,]+(?:\.\d+)?)\s*(万元|亿元|元)?'
match = re.search(pattern, text)
if not match:
return None
num_str = match.group(1).replace(',', '') # 去除千分位逗号
unit = match.group(2) or '元' # 默认单位为元
# 单位换算系数(转元)
unit_factors = {
'元': 1,
'万元': 10_000,
'亿元': 100_000_000,
}
if unit not in unit_factors:
raise ValueError(f"不支持的金额单位: {unit}")
value = float(num_str) * unit_factors[unit]
return value, unit
# 最小调用示例
if __name__ == "__main__":
sample_text = "报告期内,公司总资产为 1,234.56亿元,较上年同期增长5%。"
result = extract_total_assets(sample_text)
if result:
value, unit = result
print(f"提取结果:{value:.2f} 元(原始单位:{unit})")
else:
print("未找到总资产信息")
运行与验证
运行方式:将上述代码保存为 extract_assets.py,在命令行执行 python extract_assets.py。
预期输出:
提取结果:123456000000.00 元(原始单位:亿元)
验证用例:可替换 sample_text 中的数值与单位进行测试:
- 输入
"总资产为 500万元"→ 预期输出5000000.00 元 - 输入
"总资产:3,200元"→ 预期输出3200.00 元 - 输入
"负债合计8亿元"(不含“总资产”)→ 预期返回None
通过条件:上述三个用例输出与预期一致,且未匹配文本时正确返回 None,即判定实现通过。
常见问题
- 文本中“总资产”后紧跟换行:正则中
\s*已覆盖换行符,无需额外处理。 - 金额为整数无小数:正则中
(?:\.\d+)?使小数部分可选,可正常匹配。 - 单位缺失:默认按“元”处理,若实际文本中单位缺失且数值明显偏大,需人工确认口径。