Python:如何实现按字符串中的数字对房屋信息字符串排序?
Python实现房屋信息按编号排序的函数
实现思路
- 拆分输入字符串:将原始字符串按换行符分割为单个房屋条目,同时清理每行前后的空白字符,过滤空行。
- 提取排序键:从每个条目中提取房屋编号(即
House后的数字),转换为整数作为排序依据,确保是数值排序而非字符串排序。 - 排序并拼接:以编号为依据对条目升序排序后,重新拼接成符合格式要求的字符串。
代码实现
def sort_houses(house_str): # 拆分每行并清理空白,过滤空行 house_items = [item.strip() for item in house_str.split('\n') if item.strip()] # 按房屋编号数值排序 sorted_items = sorted(house_items, key=lambda entry: int(entry.split('House ')[1].split()[0])) # 按原格式拼接(每行保留对应缩进) return '\n '.join(sorted_items) # 测试示例 original = '''House 1 - New & Painted House 6 House 2 - Used House 4''' result = sort_houses(original) print(f"string= '{result}'")
代码说明
- 拆分处理:
split('\n')将字符串拆分为行列表,strip()去除每行前后的冗余空格,if item.strip()避免空行干扰。 - 排序逻辑:通过
split('House ')[1]获取House后的内容,再取第一个分割片段(即数字部分),转成整数后作为排序键,确保排序是按数字大小来的(比如不会出现House 10排在House 2前面的问题)。 - 拼接格式:用
'\n '拼接排序后的条目,匹配原示例的缩进格式,输出结果和目标格式一致。
内容的提问来源于stack exchange,提问作者odoo newbie
相关产品推荐
相关产品推荐

