如何从波斯语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
相关产品推荐
相关产品推荐

