Python脚本实现不规则格式数字/货币转float类型
解决方案
要处理格式混乱的捷克克朗数字并转换为float类型,核心是区分千位分隔符(可能是逗号或点,出现多次)和小数分隔符(最后一个出现的逗号或点),具体实现步骤如下:
- 清理输入字符串,移除所有无关字符(空格、"Kč"标识),仅保留数字、逗号和点;
- 定位最后一个逗号或点的位置,将其作为小数分隔符;
- 移除整数部分的所有分隔符,拼接整数部分与小数部分,最终转换为
float。
实现代码
import re def parse_czk(value): # 移除所有非数字、非逗号、非点的字符 cleaned = re.sub(r'[^\d.,]', '', value) # 找到最后一个逗号或点的位置 last_sep_index = max(cleaned.rfind(','), cleaned.rfind('.')) if last_sep_index != -1: # 拆分整数部分和小数部分,移除整数部分的所有分隔符 integer_part = cleaned[:last_sep_index].replace(',', '').replace('.', '') decimal_part = cleaned[last_sep_index + 1:] return float(f"{integer_part}.{decimal_part}") else: # 无小数部分,直接转换 return float(cleaned) # 测试示例列表 my_list = ['100,30 Kč','10 000,00 Kč', '10,000.00 Kč', '10000 Kč', '32.100,30 Kč', '12.345,678.91 Kč'] for item in my_list: print(f"{item} → {parse_czk(item)}")
测试输出
100,30 Kč → 100.3 10 000,00 Kč → 10000.0 10,000.00 Kč → 10000.0 10000 Kč → 10000.0 32.100,30 Kč → 32100.3 12.345,678.91 Kč → 12345678.91
内容的提问来源于stack exchange,提问作者HonzaVole
相关产品推荐
相关产品推荐

