Python中如何将字符串列表转为整数列表?千分位字符串转换报错解决
解决Python中字符串列表转整数列表的问题,包括带千分位的情况
嘿,这个问题我经常碰到,分两种场景给你拆解清楚:
一、普通纯数字字符串列表转整数列表
如果你的列表里都是不带千分位的纯数字字符串,比如 ['1222000', '234444', '12000000'],两种简单方法就能搞定:
- 用列表推导式:
str_list = ['1222000', '234444', '12000000'] int_list = [int(s) for s in str_list] print(int_list) # 输出: [1222000, 234444, 12000000] - 用
map()函数:str_list = ['1222000', '234444', '12000000'] int_list = list(map(int, str_list))
二、处理带千分位的字符串列表(解决你遇到的错误)
你碰到的invalid literal for int() with base 10: '1,375,178'错误,本质是int()无法识别字符串里的千分位逗号。这里有两种靠谱的解决方式:
方法1:手动移除逗号后转换
最直接的方式就是先把字符串里的逗号替换掉,再转整数,用列表推导式一行搞定:
str_list = ['1,375,178', '234,444', '12,000,000'] int_list = [int(s.replace(',', '')) for s in str_list] print(int_list) # 输出: [1375178, 234444, 12000000]
方法2:用locale模块解析(适配多地区数字格式)
如果以后可能遇到不同地区的数字分隔符(比如欧洲部分地区用.做千分位),可以用Python的locale模块来处理,它能自动识别对应地区的数字格式:
import locale # 设置地区为美国(对应千分位逗号格式),Windows系统可能需要改成'English_US' locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') str_list = ['1,375,178', '234,444', '12,000,000'] int_list = [locale.atoi(s) for s in str_list] print(int_list)
注意:如果运行时提示locale不存在,你可以先查看系统支持的locale列表(比如Linux/macOS用locale -a命令),换成系统支持的对应地区即可。
内容的提问来源于stack exchange,提问作者Conor
相关产品推荐
相关产品推荐

