我有一个txt文件,我需要提取一些值并组织为字典
这是所需的格式! {State: Town}
例如{'Alabama': 'Auburn', Alabama: 'Florence'....'Wyoming': 'Laramie'}
这是我的代码:
with open('my.txt') as file:
output = []
current_state = ""
region = ""
for line in file:
if (len(line.split("[edit]")) == 2):
current_state = line.split("[edit]")[0]
else:
region = line.split(" (")[0]
if (region != ""):
output.append([current_state, region])
return output
但是,我的代码没有按照我的意愿去做。感觉就像我存储先前提取的“区域”值并将其附加到下一个状态。所以逻辑有问题,我不确定究竟是什么。
[['Alabama', 'Auburn'],
['Alabama', 'Florence'],
['Alabama', 'Jacksonville'],
['Alabama', 'Livingston'],
['Alabama', 'Montevallo'],
['Alabama', 'Troy'],
['Alabama', 'Tuscaloosa'],
['Alabama', 'Tuskegee'],
['Alaska', 'Tuskegee'],
['Alaska', 'Fairbanks'],
['Arizona', 'Fairbanks'],
['Arizona', 'Flagstaff'],
['Arizona', 'Tempe'],
['Arizona', 'Tucson'],...]
正如你所看到的那样,我将获得'费尔班克斯'2次,首先是附加到阿拉斯加,这是正确的,其次是附加到亚利桑那州,这是不正确的。我发生在我所有的州。
...
['Alaska', 'Fairbanks'],
['Arizona', 'Fairbanks'],
...
['Wisconsin', 'Whitewater'],
['Wyoming', 'Whitewater'],
['Wyoming', 'Laramie']]
答案 0 :(得分:0)
您没有重置该区域,因此它存储以前的结果。
if (region != ""):
output.append([current_state, region])
更改为
if (region != ""):
output.append([current_state, region])
region = ''
答案 1 :(得分:0)
如果你真的想把这些值放到字典中,那么
在with open('my.txt') as file:
之前,添加country = dict()
并且在循环内部可以用作
if (region != ""):
output.append([current_state, region])
if current_state in country:
country[current_state].append(region)
else:
country[current_state] = []
country[current_state].append(region)
region = ''
对于你的问题,region = ''
将解决问题,但是在字典中输入上述代码将有所帮助,这将为特定密钥创建一个列表。快乐的编码!