如何读取文件内的键值对列表并转换为无多余换行符的Python字典
解决方案
核心问题为readlines()读取的每行内容会默认保留行尾的换行符\n,仅需在处理每行内容时移除换行符即可,同时可以优化代码适配你计算幸福度的需求:
最小改动修复原有代码
如果需要保留你原有「重复关键词自动拆分到新字典」的逻辑,仅需做两处修改:
- 分割每行内容前先移除末尾换行符
- 建议将数值转为整数类型,方便后续做平均幸福度计算
keywords_file = open('keywords.txt') keywords = keywords_file.readlines() keywords_file.close() # 新增:手动关闭文件避免资源泄漏 def keyword_to_dictionary(keywords): result = [{}] for item in keywords: # 新增:移除行尾换行符 item = item.rstrip('\n') # 跳过空行避免报错 if not item: continue key, val = item.split(",", 1) if key in result[-1]: result.append({}) # 修改:将val转为整数 result[-1][key] = int(val) return result
更简洁的推荐实现
你的需求是用关键词匹配推文计算分值,通常不存在重复的关键词,因此可以直接返回单个字典,无需使用字典嵌套列表的结构,同时用with语句自动管理文件资源:
def load_keyword_dict(file_path: str) -> dict: keyword_score = {} with open(file_path, 'r', encoding='utf-8') as f: for line in f: line = line.rstrip('\n') if not line: continue keyword, score = line.split(',', 1) keyword_score[keyword] = int(score) return keyword_score # 调用示例,直接得到可直接查询的键值对字典 keyword_dict = load_keyword_dict('keywords.txt')
该版本的优势:
- 自动完成文件关闭操作,无需手动调用
close() - 直接返回单字典结构,可通过
keyword_dict['happy']的方式直接查询对应分值 - 提前完成数值类型转换,后续计算平均幸福度时无需额外处理类型问题
- 自动跳过空行,避免文件末尾空行导致的代码报错
内容的提问来源于stack exchange,提问作者FreezieX17
相关产品推荐
相关产品推荐

