伊莉討論區
標題:
請問python含有英文字和數字的字串list要怎麼按照字串內的數字排序?
[打印本頁]
作者:
bed321654987
時間:
2017-10-20 12:57 PM
標題:
請問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/
作者:
CoNsTaRwU
時間:
2017-10-22 12:49 AM
提示:
作者被禁止或刪除 內容自動屏蔽
作者:
buluya
時間:
2017-11-6 02:29 AM
本帖最後由 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[int(re.match(p,i).group())]=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[key_in_dict[y]])
print(newlist)
作者:
zyxton
時間:
2017-12-20 10:19 PM
提示:
作者被禁止或刪除 內容自動屏蔽
歡迎光臨 伊莉討論區 (http://www76484.eyny.com/)
Powered by Discuz!