如何读取文本文件内容并按指定规则填充Python字典
实现思路
- 先初始化空字典用于存储最终的键值对
- 用Python内置的上下文管理器
with打开目标文本文件,自动处理文件关闭逻辑,避免资源泄露 - 逐行遍历文件内容,先跳过空行,再对有效行做拆分处理:
因为文本格式为「引用字段 + 空格 + 双引号包裹的文本内容」,可以直接按第一个双引号做拆分,拆分后前半部分去空格作为键,后半部分去掉末尾的双引号作为值;如果文件可能存在格式不规整的行,也可以用正则匹配提升容错性 - 将拆分得到的键值对存入字典即可
代码示例
格式规整场景(无异常行)
result_dict = {} # 替换为你的实际文件路径 file_path = "bible_text.txt" with open(file_path, "r", encoding="utf-8") as f: for line in f: # 去除首尾空白字符,跳过空行 line = line.strip() if not line: continue # 按第一个双引号拆分字符串,最多拆分1次 key_part, value_part = line.split('"', 1) # 处理键末尾多余的空格 key = key_part.strip() # 处理值末尾的闭合双引号 value = value_part.rstrip('"') result_dict[key] = value
低容错场景(可能有格式异常行)
推荐用正则匹配规则过滤无效行,避免拆分报错:
import re result_dict = {} file_path = "bible_text.txt" # 正则规则:匹配行首到双引号前的内容为键,双引号中间的内容为值 pattern = re.compile(r'^([^"]+)\s*"([^"]+)"$') with open(file_path, "r", encoding="utf-8") as f: for line in f: line = line.strip() if not line: continue match_res = pattern.match(line) if match_res: key = match_res.group(1).strip() value = match_res.group(2) result_dict[key] = value
内容的提问来源于stack exchange,提问作者codeForger
相关产品推荐
相关产品推荐

