【发布时间】:2012-01-16 15:04:35
【问题描述】:
我目前正在编写一个脚本,该脚本从两个来源中提取数据,其中一个来源是挪威邮政编码。挪威邮政编码由四位数字组成,有些以零开头。
代码如下:
#This section loads data on Norwegian post codes and places into a dictionary where postcode is key
f = open("postoversikt.txt", "r");
f1 = open("PCODES_USER_TRIM.txt","r") #load the file with all the users.
fo = open("pcodes_out","w")
place = {}
times = {}
for line in f:
words = line.rsplit("\t");
place[str(words[0])] = words[1]; #Reverse these to change the key and value - Default key: postcode value: place
number = 0;
number_unique = 0;
number_alike = 0;
for line in f1:
number = number + 1;
words1 = line.rsplit(";");
if not words1[1] in times:
number_unique = number_unique + 1;
times[words1[1]] = 1;
else:
number_alike = number_alike + 1;
times[words1[1]] = times[words1[1]] + 1;
for key, value in times.items():
print key+";"+value+";"+words[key];
fo.write(key+";"+value+";"+words[key]+"\n");
print "Totalt antall objekter behandlet er: "+ str(number);
print "Hvorav antall unike var: "+ str(number_unique);
print "Antall like nummer ble funnet: " + str(number_alike);
来自 PCODES_USER_TRIM 的一些行:
75621;4517;45 - 65
35214;7650;25 - 45
55624;9015;25 - 45
09523;5306;45 - 65
09051;2742;25 - 45
88941;1661;18 - 25
postoversikt.txt 中的一些行:
0001 OSLO 0301 OSLO P
0010 OSLO 0301 OSLO B
0015 OSLO 0301 OSLO K
0016 OSLO 0301 OSLO K
0017 OSLO 0301 OSLO K
0018 OSLO 0301 OSLO G
0021 OSLO 0301 OSLO K
0022 OSLO 0301 OSLO K
出现的一个问题是以零开头的邮政编码被删除了初始零。我的猜测是这是由于内部转换为 int(我只是 Python 的初学者,所以如果我的问题有点平凡,请原谅)。我希望这些是四个数字 xxxx 的标准格式。我想从我的第一个问题开始的第二个问题是我想将邮政编码的名称添加到最终打印输出中。这是行不通的,因为我不能用这个键来用文字来指代这个地方。
我曾经使用 str() 方法将我打印的对象转换为字符串,但在当前版本中我没有这样做,因为我想从根源处理问题。
有人可以帮我解决我的小问题吗?如何使用 rsplit 将字符串放入单词字典而不将其转换为整数?
【问题讨论】:
-
Python 不进行隐式类型转换,所以这不是你的问题。你能发布几行两个导入文件和不正确的输出输出吗?另外你的for循环缩进是错误的,所以我不知道循环中有哪些行。
-
您发布的代码存在一些语法问题。特别是缩进和分号的使用。你能从你正在使用的 .txt 文件中发布几行吗?
-
抱歉语法错误。当我将代码粘贴到页面中时,我遇到了一些问题。它现在有效吗?我还添加了我正在使用的部分 .txt 文件。
-
Python 代码中几乎不应该有分号。这不是语法错误,而是可怕的风格。
-
对不起。我只是太习惯Java了。从现在开始,我会尽量避免这样做。