Python系列-格式化資料並排序

來源:互聯網
上載者:User

標籤:python   資料   格式化   排序   

目的:將幾個記錄時間時刻的資料格式化統一,然後進行排序。

1.前提

有四個檔案,檔案的格式都不一樣,都表示時間
james.txt

‘2-34‘, ‘3:21‘, ‘2.34‘, ‘2.45‘, ‘3.01‘, ‘2:01‘, ‘2:01‘, ‘3:10‘, ‘2-22‘

julie.txt

‘2.59‘, ‘2.11‘, ‘2:11‘, ‘2:23‘, ‘3-10‘, ‘2-23‘, ‘3:10‘, ‘3.21‘, ‘3-21‘

mikey.txt

‘2:22‘, ‘3.01‘, ‘3:01‘, ‘3.02‘, ‘3:02‘, ‘3.02‘, ‘3:22‘, ‘2.49‘, ‘2:38‘

sarah.txt

‘2:58‘, ‘2.58‘, ‘2:39‘, ‘2-25‘, ‘2-55‘, ‘2:54‘, ‘2.18‘, ‘2:55‘, ‘2:55‘
2.格式化資料

四個檔案格式不統一,時間點之間有‘.’,有‘:’,還有‘-’,先使用一個函數將其轉化為:全是’.’的格式,如:‘3.01’,代碼如下:

def sanitize(time_string):    if ‘-‘ in time_string:        splitter = ‘-‘    elif ‘:‘ in time_string:        splitter = ‘:‘    else:        return(time_string)    (mins, secs) = time_string.split(splitter)    return(mins + ‘.‘ + secs)

代碼如下:

3.排序

python中排序有兩種,一種是直接sort(list),另外一種是使用sorted(list)。
第一種會直接覆蓋原來的資料,第二種是建立一個副本將資料放進去,原來的變數值不變。
整體代碼如下:

with open(‘james.txt‘) as jaf:    data = jaf.readline()james = data.strip().split(‘,‘)with open(‘julie.txt‘) as juf:    data = juf.readline()julie = data.strip().split(‘,‘)with open(‘mikey.txt‘) as mif:    data = mif.readline()mikey = data.strip().split(‘,‘)with open(‘sarah.txt‘) as saf:    data = saf.readline()sarah = data.strip().split(‘,‘)print(sorted([sanitize(t) for t in james]))print(sorted([sanitize(t) for t in julie]))print(sorted([sanitize(t) for t in mikey]))print(sorted([sanitize(t) for t in sarah]))
4.測試結果

代碼:

上面的後面三局是將for迴圈和排序寫在一起了,比較如:

說明:這個格式真的是有點虐心,不按照找個格式輸出,IDLE還報錯,我真的是無語了,調試了好久,代碼沒問題,就是格式問題。讓我揪心呀。比如下面這幅圖:

測試結果資料:

[‘2.01‘, ‘2.01‘, ‘2.22‘, ‘2.34‘, ‘2.34‘, ‘2.45‘, ‘3.01‘, ‘3.10‘, ‘3.21‘][‘2.11‘, ‘2.11‘, ‘2.23‘, ‘2.23‘, ‘2.59‘, ‘3.10‘, ‘3.10‘, ‘3.21‘, ‘3.21‘][‘2.22‘, ‘2.38‘, ‘2.49‘, ‘3.01‘, ‘3.01‘, ‘3.02‘, ‘3.02‘, ‘3.02‘, ‘3.22‘][‘2.18‘, ‘2.25‘, ‘2.39‘, ‘2.54‘, ‘2.55‘, ‘2.55‘, ‘2.55‘, ‘2.58‘, ‘2.58‘]

預設地,sort()方法和sorted() BIF都會按升序對資料進行排序。要以降序對資料進行排序,需要向sort()或sorted()傳入參數reverse=Treue,python會負責具體處理。

參考書籍:《Head First Python》Barry.

Python系列-格式化資料並排序

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.