You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何读取文件内的键值对列表并转换为无多余换行符的Python字典

解决方案

核心问题为readlines()读取的每行内容会默认保留行尾的换行符\n,仅需在处理每行内容时移除换行符即可,同时可以优化代码适配你计算幸福度的需求:

最小改动修复原有代码

如果需要保留你原有「重复关键词自动拆分到新字典」的逻辑,仅需做两处修改:

  1. 分割每行内容前先移除末尾换行符
  2. 建议将数值转为整数类型,方便后续做平均幸福度计算
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:15:03