You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从波斯语docx文件提取浮点数存入列表,避免误加文本句号

波斯语docx文件浮点数提取修正方案

问题根源

原有代码的逻辑存在两个核心问题:

  • 逐字符筛选没有区分「小数点」和「句子结束的句号」,只要遇到.就加入列表,导致大量冗余的句号被提取
  • 没有把连续的数字和小数点拼接为完整的数值,输出都是单个字符的集合,无法直接使用

修正方案

使用正则表达式匹配完整的数值格式,自动过滤单独的句号,直接提取完整的数值:

from docx import Document
import re

numbers = []
doc = Document('word.docx')
# 匹配规则:至少1位数字,后面可跟1个小数点和若干数字
pattern = re.compile(r'\d+\.?\d*')

for para in doc.paragraphs:
    text = para.text
    # 提取当前段落所有匹配的数值字符串
    matched_nums = pattern.findall(text)
    # 转换为浮点型加入列表
    for num_str in matched_nums:
        numbers.append(float(num_str))
    print(text)

print(numbers)

输出效果

使用你提供的波斯语文本测试,最终输出列表为:
[2.7, 3.0, 306.0, 74.5, 90.0, 10.0, 15.0, 26.0]
如果需要保留整数为int类型,可以修改数值转换逻辑:

for num_str in matched_nums:
    if '.' in num_str:
        numbers.append(float(num_str))
    else:
        numbers.append(int(num_str))

调整后输出为:
[2.7, 3, 306, 74.5, 90, 10, 15, 26]

内容的提问来源于stack exchange,提问作者MOHSEN_HOSEINI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 05:06:03