jython将文本文件转换为字符串列表

时间:2014-12-03 17:22:27

标签: java list text jython data-conversion

我必须将文本文件转换为由逗号分隔的字符串列表(没有空格,没有第一行)。打印完之后,我需要打印每个状态的名称,每个状态包含多少行,每个状态的所有Cen2010值(每行中的第一个数字)的总和,Est2013值的总和(每行中的最后一个数字) )对于每个州,以及每个州从Cen2010人口到Est2013人口的总变化。

文本文件示例:

  

NAME,STNAME,Cen2010,Base2010,Est2010,Est2011,Est2012,Est2013
  " Abingdon city",Illinois,3319,3286,3286,3270,3242,3227
  " Addieville village",Illinois,252,252,252,250,250,247
  " Addison village",Illinois,36942,36964,37007,37181,37267,37385
  " Adeline village",Illinois,85,85,85,84,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

返回:
['" Abingdon city"',' Illinois','''' 3286',' 3286',' 3270',' 3242',' 3227']
['" Addieville village"',' Illinois'' 252',' 252',' 252',' 250',' 250',' 247']
['" Addison village"',' Illinois',' 36942',' 36964',' 37007',' 37181',' 37267',' 37385']
['" Adeline village"',' Illinois'' 85',' 85',' 85',' 84',' 84',' 83']

1 个答案:

答案 0 :(得分:0)

我认为您可以将此数据导入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)

作为家庭作业,尝试以所需的格式打印这本词典。