如何去除字典字符串值中的度数符号并转换为整数?
去除字典值中的度数符号并转换为整数
问题背景
现有如下字典:
Measurements = {'Kitchen': '22°', 'Master bedroom': '19°', 'Sitting room': '21°', 'Toilet': '24°', 'Guest bedroom': '18°', 'Garage': '15°', 'Outside': '12°'}
需要将其转换为值为整数的新字典:
newDictionary = {'Kitchen': 22, 'Master bedroom': 19, 'Sitting room': 21, 'Toilet': 24, 'Guest bedroom': 18, 'Garage': 15, 'Outside': 12}
尝试执行以下代码时出现错误:
newDictionary = {str(k):int(v) for k,v in measurements.items()}
错误信息:
ValueError: invalid literal for int() with base 10: '22°'
错误原因
int()函数只能转换纯数字组成的字符串,原字典的值包含度数符号°,无法直接转换,必须先去除非数字部分。
解决方案
以下是几种可行的实现方式:
方法1:移除末尾的度数符号
利用rstrip('°')方法移除字符串末尾的度数符号,再转换为整数:
Measurements = {'Kitchen': '22°', 'Master bedroom': '19°', 'Sitting room': '21°', 'Toilet': '24°', 'Guest bedroom': '18°', 'Garage': '15°', 'Outside': '12°'} newDictionary = {k: int(v.rstrip('°')) for k, v in Measurements.items()}
方法2:提取所有数字字符
使用filter筛选出字符串中的数字字符,拼接后转换为整数,适用于度数符号位置不固定的情况:
newDictionary = {k: int(''.join(filter(str.isdigit, v))) for k, v in Measurements.items()}
方法3:正则表达式匹配数字
通过正则表达式提取字符串中的数字部分,适合处理更复杂的字符串格式:
import re newDictionary = {k: int(re.search(r'\d+', v).group()) for k, v in Measurements.items()}
内容的提问来源于stack exchange,提问作者Noel
相关产品推荐
相关产品推荐

