Python处理含括号、百分号的字符串列表提取数值报错如何解决
实现方案
观察你的输入列表结构非常规律:首个元素RX为无效值,后续元素每2个为一组,每组第一个元素末尾带(,存储的就是你需要提取的数值。你之前报错大概率是误将带百分号的元素也纳入了整数转换范围,或者没有提前清理字符串中的括号字符。
方法1:按固定索引提取(效率最高,适合结构稳定的场景)
直接从索引1开始按步长2取元素,去掉末尾的(后转整数即可:
x = ['RX', '0(', '0%)', '2(', '0%)', '154018(', '99%)', '0(', '0%)', '0(', '0%)', '0(', '0%)'] y = [int(item.rstrip('(')) for item in x[1::2]] print(y) # 输出:[0, 2, 154018, 0, 0, 0]
方法2:正则提取(容错性更高,适合结构有波动的场景)
如果后续列表元素的括号位置可能变化,可以用正则匹配每个元素中的纯数字部分:
import re x = ['RX', '0(', '0%)', '2(', '0%)', '154018(', '99%)', '0(', '0%)', '0(', '0%)', '0(', '0%)'] y = [] for s in x[1:]: # 匹配字符串开头的连续数字 match_res = re.match(r'\d+', s) if match_res: y.append(int(match_res.group())) print(y) # 输出:[0, 2, 154018, 0, 0, 0]
内容的提问来源于stack exchange,提问作者Pjose123
相关产品推荐
相关产品推荐

