如何将此文本文件解析为字典?

时间:2017-10-11 19:59:54

标签: python dictionary

我正在使用以下格式解析大文本文件。

城市是西海岸的城市1。

(某些与我无关的行)

...

冬天温度是15度。

.....

白天是5个小时。

...

城市是西海岸的城市。

....模式重复。

我使用了line.startswith()并通过连接如下的值来创建输出行:

for line in file:

if line.startswith('city'):

   line1 = line[8:12]

if line.startswith('temperature')

   line2 = line[:] and so on.

最后输出线= line1 + line2 + line3

所以它为每个城市街区输出一条输出线。

但我明白这是一个丑陋的解决方案。我想要的是这样的字典: {city1:[15,5],city2:[温度,白天] ....}

你能帮忙吗?

2 个答案:

答案 0 :(得分:0)

dict = {}
if line.startswith('city'):
    current_city = line[8:12]
    dict[current_city] = []

从这里你只需要dict[current_city].append(temp)等等。

通过识别城市类别将重复的模式来循环输入。

答案 1 :(得分:0)

您可以遍历文本文件的行以查找您的提示,然后将值添加到字典中。每个城市的值都存储在一个列表中,因此您最终会得到一个按城市名称键入的城市房产列表。

cities = {}
with open('file.txt', 'r') as f:
    city = None
    city_name = None

    for line in f:
        if line.startswith('city'):
            if city is not None:
                cities[city_name] = city
            city = []
            city_name = line[8:12]

        elif line.startswith('temperature'):
            city.append(line[:])

        elif line.startswith('daytime'):
            city.append(line[:])

        # etc.

# Print the resulting city properties
from pprint import pprint
pprint(cities)

您可能更喜欢使用str.split()而不是直接对值进行切片。你可能也对像regular expressions这样的东西感兴趣,它们对解析这样的字符串更有用。