用户输入从.csv文件生成新列表?

时间:2017-09-19 17:06:16

标签: python python-3.x csv dictionary

我在这里有一个问题,我希望有些善良的人会帮忙回答!

我有一个.csv文件,标题中有三个项目,并且分配了很多项目。印刷时.csv看起来像这样:

['NUTS CODE', 'NUTS NAME', 'Change 2008-2014']
['AT11', 'Burgenland (AT)', '0.6']
['AT12', 'Niederosterreich', '1.4']
['AT13', 'Wien', '2.9']
['AT21', 'Karnten', '2.4']
['AT22', 'Steiermark', '1.1']
['AT31', 'Oberosterreich', '1.3']
['AT32', 'Salzburg', '0.7']
['AT33', 'Tirol', '0.6']
['AT34', 'Vorarlberg', '-0.7']
['BE10', 'Region de Bruxelles-Capitale / Brussels Hoofdstedelijk Gewest', '2.4']
['BE21', 'Prov. Antwerpen', '1.5']
['BE22', 'Prov. Limburg (BE)', '1.2']
['BE23', 'Prov. Oost-Vlaanderen', '0.7']
['BE24', 'Prov. Vlaams-Brabant', '0.8']
['BE25', 'Prov. West-Vlaanderen', '1.5']

我想创建一个程序,它接受用户输入,其中输入与第一个值相关,比如我输入:“AT”,然后程序返回与该代码相关的所有相应名称和值。示例:如果我输入“BE”,代码将创建以下列表: [["BE10", "Region de Bruxelles-Capitale / Brussels Hoofdstedelijk Gewest", 2.4], [BE21', 'Prov. Antwerpen', '1.5']]等。

这是我用来打开的:

import csv

with open ('Change_in_Unemployment_2008-2014.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    #next(readCSV)     #Uncomment to remove header

for row in readCSV:
    print(row)

csvfile.close()

2 个答案:

答案 0 :(得分:0)

    @Bean
    @Transformer(inputChannel = "routingSlipHeaderChannel", outputChannel = "processChannel")
    public HeaderEnricher headerEnricher() {
        return new HeaderEnricher(Collections.singletonMap(IntegrationMessageHeaderAccessor.ROUTING_SLIP,
                new RoutingSlipHeaderValueMessageProcessor(routeStrategy())));
    }

答案 1 :(得分:0)

上面的答案几乎是正确的,只需要两个修复。您必须跳过标题行,因为这是您的列标签,并且最好使用raw_input来获取用户输入,因为输入被解释为python代码。

strInput = input("Please enter a full/partial NUTS code to filter by:")

然后按如下方式修改for循环:

header = True
for row in readCSV:
    if header = True:
        print row
        header = False
        continue
    if row[0].startswith(strInput):
        print (row)