金典小程序之csv字典查询模拟

程序的要求是将一个csv的多寡读出来,转化成为一个字典,最后形成一个可供查询的字典。

第一来探视最后要成的协会:

  {‘”1(马官营-四惠站)”‘: [澳门新莆京手机abb,’马官营’, ‘六里桥北里’, ‘公主坟南站’,
‘公主坟’, ‘军事博物馆’, ‘木樨地’, ‘工会大楼’, ‘礼士路’, ‘复兴门’,
‘西单’, ‘菲尼克斯公园’, ‘东安门’, ‘东单’, ‘香江站口’, ‘日坛路’, ‘永安里’,
‘大北窑’, ‘郎家中’, ‘八王坟’, ‘四惠站’]}

一、分析首先要将数据总体读取出来。那里有二种采纳readline(需要用for循环每行),使用readlines(全部读取之后需求分割形成可用的列表),使用csv模块直接读取:

使用readlines读取

#读取csv里面的数据
file =r'C:\Users\jeep-peng zhang\Desktop\beijing_jt.csv'
f = open(file,'r',encoding='utf-8')
stat = f.readlines()[1:40]
#链接空格拼接获取key值
stat_join = ''.join(stat)#把他们链接起来
stat_split = stat_join.split(',')#以逗号把他们分开
stat_station = stat_split[-1].split('\r\n \r\n')#excel 里面特有的换行等
print(stat_split[1])#获得key值

原理:

1.分割key()和value()值

澳门新莆京手机abb 1

2.行使csv读取,刚起头运用那种艺术遍历。发现即使可以把key()值弄出来,不过不可能和value()结合。

import csv
with open(file,'r',encoding='utf-8') as files:
    reader = csv.reader(files)
    line = next(reader)#从第二行开始读
    lines = [line for line in reader]
    list = []
    for row in lines:
        list.append(row[1])

校对后:输入站名查询线路

# #读取csv里面的数据
file =r'C:\Users\jeep-peng zhang\Desktop\beijing_jt.csv'
# f = open(file,'r',encoding='utf-8')
# stat = f.readlines()[1:40]
# #链接空格拼接获取key值
# stat_join = ''.join(stat)#把他们链接起来
# stat_split = stat_join.split(',')#以逗号把他们分开
# stat_station = stat_split[-1].split('\r\n \r\n')#excel 里面特有的换行等
# print(stat_split[1])#获得key值
import csv
with open(file,'r',encoding='utf-8') as files:
    reader = csv.reader(files)
    next(reader)#第一行不需要,因此从第二行开始读
    result = {}
    while True:
        try:
            lines = next(reader)
        except:
            break#读完之后退出
        print(lines[1])#获取所有的keys()
# # # #获取values值
        import re
        part = (r'(?P<name>\d+)\s(?P<stion>\D+)')
        end = re.findall(part,lines[-1])
        resui = []
        for a in end:
            print(a[0],a[1].strip())
            resui.append(a[1].strip())
# # #构建一个字典
        result[lines[1]]=resui#字典的写法
    files.close()
    while True:
        user = input('请输入一个站名:')
        for k, v in result.items():
            if user in v:
                print(user,k)

 效果:

澳门新莆京手机abb 2