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

Posted jeep-鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了金典小程序之csv字典查询模拟相关的知识,希望对你有一定的参考价值。

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

首先来看看最终要成的结构:

  {\'"1(马官营-四惠站)"\': [\'马官营\', \'六里桥北里\', \'公主坟南站\', \'公主坟\', \'军事博物馆\', \'木樨地\', \'工会大楼\', \'礼士路\', \'复兴门\', \'西单\', \'中山公园\', \'天安门\', \'东单\', \'北京站口\', \'日坛路\', \'永安里\', \'大北窑\', \'郎家园\', \'八王坟\', \'四惠站\']}

一、分析首先要将数据全部读取出来。这里有三种使用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()值

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)

 效果:

以上是关于金典小程序之csv字典查询模拟的主要内容,如果未能解决你的问题,请参考以下文章

边做算法边学go语言之程序员面试金典面试题 01.06. 字符串压缩

微信小程序第七天WXML语法之模板用法

微信小程序第七天WXML语法之模板用法

程序员面试金典字符串面试题 01.04 - 回文排列

小菜鸟之oracle数据字典

#yyds干货盘点# LeetCode程序员面试金典:兰顿蚂蚁