頁:
[1]
請問python含有英文字和數字的字串list要怎麼按照字串內的數字排序?
本帖最後由 bed321654987 於 2017-10-22 05:49 PM 編輯請問含有英文字和數字的字串list要怎麼按照字串內的數字排序,我用sorted函數弄不出來
其實我是用os.listdir函數讀文件夾的檔名,出來的list如下
['10_PT', '11_PT', '12_PT', '13_PT', '15_PT', '16_PT', '17_PT', '18_PT', '19_PT', '1_PT', '20_PT', '21_PT', '22_PT', '23_PT', '24_PT', '25_PT', '26_PT', '2_PT', '3_PT', '4_PT', '5_PT', '6_PT', '7_PT', '8_PT', '9_PT']
因為檔名沒有按照數字排序,我不好處理資料
我希望能排成['1_PT', '2_PT', '3_PT',〜,'26_PT']
請問用sorted函數能完成嗎?
另外,排序後我想和以下字串串接,該怎麼寫
desktop/2016-data/
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> 至少 specify 一下這是什麼語言吧… 本帖最後由 buluya 於 2017-11-6 02:53 AM 編輯
我是初學者,有一個想法,用python3測試可以運作,可能顯得很麻煩:
import re
p=r"\d+" #pattern \d代表digit(0-9) ‘+’代表至少出現一次
directory="desktop/2016-data/"
dict={}
list=['1_pt','2_pt','10_pt','12_pt'] #自己copy完整的貼上來吧
for i in list:
dict=i #用正則表達式取出digit 把他int了,然後跟字串分別作為key和value
key_in_dict=sorted(dict.keys()) #把dict的key取出來再sorted產生一個順序的list
newlist=[]
#利用list的int藉助for loop 把dict裡面的對應字串(value)
#跟“"desktop/2016-data/"”combine後順序放進newlist
for y in range(0,len(key_in_dict)):
newlist.append(directory+dict])
print(newlist)
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> 本帖最後由 zyxton 於 2017-12-20 10:23 PM 編輯
可以根據字段前半部分的數字結合lambda進行排序,如下:
data = ['10_PT', '11_PT', '12_PT', '13_PT', '15_PT', '16_PT', '17_PT', '18_PT', '19_PT', '1_PT', '20_PT', '21_PT', '22_PT', '23_PT', '24_PT', '25_PT', '26_PT', '2_PT', '3_PT', '4_PT', '5_PT', '6_PT', '7_PT', '8_PT', '9_PT']
sortedData = sorted(data, key = lambda d: int(d.split("_")))
頁:
[1]