将多列TXT文件转为字典:提取前两列作键值对(Python 2.6)
解决Python 2.6提取文本文件前两列作为键值对的问题
嘿,作为Python 2.6新手,别担心,这个需求其实很好实现,我一步步给你讲清楚怎么做:
核心思路
我们需要完成三个简单步骤:
- 读取文本文件的内容
- 按竖线
|分割每行(或每条记录),提取前两列 - 将前两列组合成
键:值的格式,或者存入字典备用
代码实现(假设每行是一条记录)
如果你的.txt文件里每行都是一条完整的记录(比如每行格式是AM|75019|...|...|...),可以用下面的代码:
# 初始化一个字典,用来存储键值对(可选,不需要的话可以去掉) key_value_dict = {} # 使用with语句打开文件,Python 2.6已支持,会自动关闭文件 with open('你的文件名.txt', 'r') as file_obj: # 遍历文件的每一行 for line in file_obj: # 去掉行首尾的空格、换行符,避免干扰分割 cleaned_line = line.strip() # 跳过空行 if not cleaned_line: continue # 按竖线分割每行内容,得到各列的列表 columns = cleaned_line.split('|') # 确保至少有两列,防止格式错误导致索引越界 if len(columns) >= 2: # 提取前两列,再次清理空白 key = columns[0].strip() value = columns[1].strip() # 打印键值对 print("{0}:{1}".format(key, value)) # 如果要存入字典,执行下面的语句 key_value_dict[key] = value # 可选:打印最终的字典 # print(key_value_dict)
特殊情况处理(所有记录在同一行)
如果你的.txt文件里所有记录都连在一行(比如你给出的示例内容那样),可以用下面的代码处理:
key_value_dict = {} with open('你的文件名.txt', 'r') as file_obj: # 读取整个文件内容 full_content = file_obj.read().strip() # 按" AM|"分割,拆分出所有记录 records = full_content.split(' AM|') # 处理第一条记录(开头的AM|...) if records: first_columns = records[0].split('|') if len(first_columns) >=2: key = first_columns[0].strip() value = first_columns[1].strip() print("{0}:{1}".format(key, value)) key_value_dict[key] = value # 处理剩下的记录(每条记录开头缺少AM,需要手动指定键为AM) for record in records[1:]: columns = record.split('|') if len(columns) >=1: value = columns[0].strip() print("AM:{0}".format(value)) # 如果要保存所有AM对应的值,建议用列表存储,避免后面的覆盖前面的 # key_value_dict.setdefault('AM', []).append(value) key_value_dict['AM'] = value
关键知识点说明
with open(...):Python 2.6开始支持的安全文件操作方式,无需手动调用close(),文件会在代码块结束后自动关闭。strip():用于去除字符串首尾的空白字符(空格、换行符等),保证提取的键值没有多余空白。split('|'):按指定的分隔符(这里是竖线)拆分字符串,得到各列的列表。- 索引检查
len(columns)>=2:避免因某些行格式错误(比如缺少列)导致程序报错。
内容的提问来源于stack exchange,提问作者klex52s
相关产品推荐
相关产品推荐

