我必须将文本文件转换为由逗号分隔的字符串列表(没有空白,也没有第一行)。打印之后,我需要打印每个状态的名称、每个状态包含多少行、每个状态的所有Cen2010值之和(每行中的第一个数字)、每个状态的Est2013值之和(每一行中的最后一个数字),以及每个状态从Cen2010总体到Est2013总体的总和。
文本文件示例:
姓名,Cen2010,Base2010,Est2010,Est2011,Est2012,Est2013 伊利诺斯州阿宾敦市电话:3319,3286,3286,3270,3242,3227 伊利诺斯州“阿迪维尔村”,252,252,252,250,250,247 “艾迪森村”,伊利诺斯州,36942,3696,37007,37181,37267,37385 “阿德林村”,伊利诺斯州,85,85,85,84,83
现行法典:
def readPopest():
censusfile=pickAFile()
cf=open(censusfile,"rt")
cflines=cf.readlines()
for i in range(len(cflines)-1):
lines=cflines[i+1]
estimate=lines.strip().split(',')
print estimate返回:
“阿宾敦城”、“伊利诺斯州”、“3319”、“3286”、“3286”、“3270”、“3242”、“3227”
“阿迪维尔村”、“伊利诺斯州”、“252”、“252”、“252”、“250”、“250”、“247”
“艾迪森村”、“伊利诺斯州”、“36942”、“36964”、“37007”、“37181”、“37267”、“375 385”
“阿德林村”、“伊利诺斯州”、“85”、“85”、“85”、“84”、“84”、“83”
发布于 2014-12-04 10:25:43
我认为您可以将这些数据导入SQL数据库,然后就可以很容易地进行求和、筛选等操作。
但在Python里我们有字典。您可以读取数据并填写字典,其中键名是状态的名称。然后,对于每一行,将城镇添加到这个州的城镇列表中,并将数字添加到已经保存的数字中。当然,对于第一个城镇,您必须创建两个数组的结构。一个代表城镇,一个代表数字。在代码中,如下所示:
def add_items(main_dict, state, town, numbers):
try:
towns_arr, numbers_arr = main_dict[state]
towns_arr.append(town)
for i in range(len(numbers)):
numbers_arr[i] += numbers[i]
except KeyError:
town_arr = [town, ]
main_dict[state] = [town_arr, numbers]现在,您必须在读取文件的主代码中使用它:
state_dict = {}
cf = open(censusfile, "rt")
lines = cf.readlines()
for line in lines[1:]: # we skip 1st line
arr = line.strip().split(',')
town = arr[0]
state = arr[1]
numbers = [int(x) for x in arr[2:]]
add_items(state_dict, state, town, numbers)
print(state_dict)作为家庭作业,试着以所需的格式打印这本词典。
https://stackoverflow.com/questions/27277844
复制相似问题