1. 程式人生 > >金典小程序之csv字典查詢模擬

金典小程序之csv字典查詢模擬

ima items blog 取出 span color 結合 數據 三種

程序的要求是將一個csv的數據讀出來,轉化成為一個字典,最後形成一個可供查詢的字典。

首先來看看最終要成的結構:

  {‘"1(馬官營-四惠站)"‘: [‘馬官營‘, ‘六裏橋北裏‘, ‘公主墳南站‘, ‘公主墳‘, ‘軍事博物館‘, ‘木樨地‘, ‘工會大樓‘, ‘禮士路‘, ‘復興門‘, ‘西單‘, ‘中山公園‘, ‘天安門‘, ‘東單‘, ‘北京站口‘, ‘日壇路‘, ‘永安裏‘, ‘大北窯‘, ‘郎家園‘, ‘八王墳‘, ‘四惠站‘]}

一、分析首先要將數據全部讀取出來。這裏有三種使用readline(需要用for循環每行),使用readlines(全部讀取之後需要分割形成可用的列表),使用csv模塊直接讀取:

使用readlines讀取

#讀取csv裏面的數據
file =rC:\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 =rC:\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字典查詢模擬