我正在使用以下格式解析大文本文件。
城市是西海岸的城市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:[温度,白天] ....}
你能帮忙吗?答案 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这样的东西感兴趣,它们对解析这样的字符串更有用。