将具有多个列的txt文件转换为字典

2024-06-16 12:00:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.txt文件,格式如下:

AM|75019|Caribbean from 15N to 18N between 80W and 85W|18.757950|-81.741300
AM|75021|Caribbean from 15N to 18N between 72W and 80W|18.757950|-81.741300
AM|75015|Caribbean approaches to the Windward Passage|15.133340|-68.139050

我只提取前两列作为key:value。例如,AM:75019AM:75021等等,我对python不太熟悉(使用2.6),不知道如何做到这一点。我搜索了一下,发现有多个答案并不完全有意义,因为有多个专栏。在


Tags: and文件thetokeyfromtxtvalue
3条回答

Python中的字典不能有重复的键,因此您可以做的最接近的事情就是存储与每个键相关联的值的列表。在

您的文件是由字符分隔的值组成的,因此使用Python的^{}模块可以将文件解析为单独的字段。在

这里有一种方法可以实现你想要的。请注意,您还可以使用添加到Python v2.5中的^{}类,而不是定义自己的类,如下所示:

import csv
from pprint import pprint

class ListDict(dict):
    """ Dictionary who's values are lists. """
    def __missing__(self, key):
        value = self[key] = []
        return value

filename = 'multi_col.csv'

lstdct = ListDict()
with open(filename, 'rb') as csvfile:
    for row in csv.reader(csvfile, delimiter='|'):
        key, value = row[:2]
        lstdct[key].append(value)

pprint(lstdct)  # -> {'AM': ['75019', '75021', '75015']}

按照下面的步骤,得到预期的响应作为输出数组

添加文件.txt到项目结构 -在新的提取信息.py -执行它

f = open('file.txt', 'r')
content = f.read()
allLines = content.split('\n')
output = []
for singleLine in allLines:
    singleLine = singleLine.split('|')
    extractedJSON = {}
    extractedJSON[singleLine[0]] = singleLine[1]
    output.append(extractedJSON)
print "output"
print output
f.close()

我附上了运行代码的图片。Image Showing running code

您可能需要使用split function。在

使用“|”分隔符,您将为每一行获取多个标记。为了你的目的,你只需要使用前两个。在

这是一个小片段

ze_dict = {}
ze_file = open(my_file_path, 'r')
ze_lines = ze_file.read().splitlines()
for l in ze_lines:
    ze_tokens = l.split('|')
    ze_dict[ze_tokens[0]] = ze_tokens[1]
ze_file.close()

你可以在这个片段中添加错误控制!在

请注意这是最Python式的方法(见其他答案)

相关问题 更多 >