伊莉討論區

標題: python csv [打印本頁]

作者: a183963    時間: 2016-7-18 03:04 PM     標題: python csv

本帖最後由 snowflying 於 2016-7-19 11:09 AM 編輯

這裡有1個CSV檔(RAR解壓縮後) 題目是這張圖片
要用Python程式寫出 請各位大大提出一些見解!!
3Q~~

作者: snowflying    時間: 2016-7-18 06:42 PM

本帖最後由 snowflying 於 2016-7-18 06:43 PM 編輯

這題目是作業嗎?
作業直接求答案,會直接刪帖喔
因為作業多半都是課程範圍內的練習
不自己練習就沒有效果

如果不是作業的話,還是會刪除
因為你完全沒有自己寫的程式碼,這不算是討論
討論是看哪個環節遇到問題,不是憑空求得程式碼
若真的只是想要參考
google 搜尋 python csv,一定有範例

作者: a183963    時間: 2016-7-18 11:54 PM

snowflying 發表於 2016-7-18 06:42 PM
這題目是作業嗎?
作業直接求答案,會直接刪帖喔
因為作業多半都是課程範圍內的練習

練習用
我上網當然找過有關讀取CSV檔的語法之類的
但就是不知從哪下手
如果違規就幫忙刪吧 感謝管理員!
作者: snowflying    時間: 2016-7-19 12:10 AM

參考這一篇
  1. import csv

  2. f = open('test.csv', 'r')
  3. arr = ['ID', 'Name', 'Gender', 'Date of birth', 'Job', 'Salary']

  4. for row in csv.DictReader(f, arr):
  5.     print(row)
複製代碼
這樣可以印出每一個 row
每次讀的時候是一個 dict
再依照題目要求改動就行了
作者: a183963    時間: 2016-7-19 09:21 AM

a183963 發表於 2016-7-18 11:54 PM
練習用
我上網當然找過有關讀取CSV檔的語法之類的
但就是不知從哪下手

我是用python2的
有人說2的Library比較多
作者: a183963    時間: 2016-7-19 09:26 AM

snowflying 發表於 2016-7-19 12:10 AM
參考這一篇這樣可以印出每一個 row
每次讀的時候是一個 dict
再依照題目要求改動就行了 ...

用import好像比較簡短對吧??
因為有些import的不大了解
所以是想用fuction一步一步慢慢做的
好像用List或Dict都可以
我會參考這篇下手的 謝謝管理員!
作者: chevylin0802    時間: 2016-7-19 10:26 AM

a183963 發表於 2016-7-19 09:21 AM
我是用python2的
有人說2的Library比較多

不要把Library當成重要考量
Python 2與Python 3在理念上有許多差異
目前支援Python 2.7的開源程式與開源專案比較多許多
是基於歷史因素
畢竟Python 2是比較有歷史的版本
當你需要使用多國語言的時候
Python 3可以直接支持Unicode編碼的優勢就出現了
到那個時候你還要執意使用Python 2嗎?




作者: snowflying    時間: 2016-7-19 10:34 AM

a183963 發表於 2016-7-19 09:26 AM
用import好像比較簡短對吧??
因為有些import的不大了解
所以是想用fuction一步一步慢慢做的

沒有 import 的話
預設只會有一些可以用而已

dict 是我檢查 row 的型態時
print(type(row)) 得到的
從輸出來看,也是 dict 這個 class 沒錯

之前有學過 python2 的語法嗎?
官網的資料可以看過去

https://docs.python.org/2/

Tutorial 可以先走一遍
接著參考一下 Language Reference,大致了解一下語法
然後 Library Reference 可以找一些實用的學一學
比方說 13.1. csv — CSV File Reading and Writing
就是這一帖可能會用到的,裡面有一些函式的說明
最後可以看一下 Python HOWTOs

其他還有不列在官網那邊的可以使用,就是自行摸索了

作者: a183963    時間: 2016-7-19 03:48 PM

本帖最後由 a183963 於 2016-7-20 09:15 AM 編輯
snowflying 發表於 2016-7-19 10:34 AM
沒有 import 的話
預設只會有一些可以用而已

import我還是不會用
所以後來我還是用def一步一步慢慢做
有人能提供 import csv的寫法嗎??我想找個方向以下是第一題的程式
  1. import re

  2. def ex01(x):
  3.     test=open(x).read()
  4.     x=re.split('\||\n|\r',test)
  5.     return x

  6. def ls(x):
  7.     lsb = []
  8.     lss = []
  9.     lsb = x
  10.     for i in range(0,len(lsb)-5,6):
  11.         tuplex=(lsb[i],lsb[i+1],lsb[i+2],lsb[i+3],lsb[i+4],lsb[i+5])
  12.         lss = lss + [tuplex]
  13.     return lss

  14. def job(ls):
  15.     newls=[]
  16.     for i in range(len(ls)):
  17.         if ls [i][4] not in newls:
  18.             newls.append(ls[i][4])
  19.     return newls

  20. def salary(ls,job):
  21.     a=[]
  22.     for x in range(len(job)):
  23.         b=[]
  24.         for y in range(len(ls)):
  25.             if ls[y][4] == job[x]:
  26.                 b = b + [int(ls[y][5])]
  27.         a = a + [b]
  28.     return a

  29. def counter(job,salary):
  30.     for i in range(len(job)):
  31.         alist="%s \t Max:%r \t aver:%r \t min:%r"%(job[i],max(salary[i]),sum(salary[i])*1.0/len(salary[i]),min(salary[i]))
  32.         print alist

  33. if __name__=='__main__':
  34.     a=ex01('test.csv')
  35.     b=ls(a)
  36.     c=job(b)
  37.     d=salary(b,c)
  38.     e=counter(c,d)
複製代碼





作者: snowflying    時間: 2016-7-20 11:07 PM

a183963 發表於 2016-7-19 03:48 PM
import我還是不會用
所以後來我還是用def一步一步慢慢做
有人能提供 import csv的寫法嗎??我想找個方向以 ...

不懂你的意思
是說要用 csv 裡面的東西嗎?

還是不想 import,自己實作
作者: a183963    時間: 2016-7-21 10:47 AM

snowflying 發表於 2016-7-20 11:07 PM
不懂你的意思
是說要用 csv 裡面的東西嗎?

直接 import csv那個寫法好像是要用dict寫對吧?
dict的我不太熟所以想看個範例
我目前大多都用list寫
作者: snowflying    時間: 2016-7-21 10:55 AM

a183963 發表於 2016-7-21 10:47 AM
直接 import csv那個寫法好像是要用dict寫對吧?
dict的我不太熟所以想看個範例
我目前大多都用list寫 ...

以四樓的例子來說
就是取 row['ID']、row['Name']、...、row['Salary']
也就是第四行裡面的那些

作者: a183963    時間: 2016-7-21 01:34 PM

snowflying 發表於 2016-7-21 10:55 AM
以四樓的例子來說
就是取 row['ID']、row['Name']、...、row['Salary']
也就是第四行裡面的那些

這樣一個一個的就是dict嗎??
作者: snowflying    時間: 2016-7-21 02:02 PM

a183963 發表於 2016-7-21 01:34 PM
這樣一個一個的就是dict嗎??

不是,取出來的 row 是每一筆資料,他的型態是 dict
印出來像這樣

{'Name': 'Cadence', 'ID': '200', 'Job': 'Operator', 'Salary': '30303', 'Gender': 'Female', 'Date of birth': '1999/9/9'}

就像字典一樣,找 'Name' 會對應到 'Cadence';找 'ID' 會對應到 '200'
要取出哪一項,就作為索引值放進 row[] 裡面
取出來的值是字串,要轉成數字自己轉就行了

作者: a183963    時間: 2016-7-22 09:13 AM

snowflying 發表於 2016-7-21 02:02 PM
不是,取出來的 row 是每一筆資料,他的型態是 dict
印出來像這樣

好的 大致上理解了!!
謝謝大大!!




歡迎光臨 伊莉討論區 (http://a401.file-static.com/) Powered by Discuz!