ゼロ埋め無しのリストをソートする
通常のソートでは、ゼロ埋めをしていない数字を含む文字列のリストをソートする場合、期待通りの並び順になってくれません。
getList=["test_20_geo","test_100_geo","test_001_geo","test_10_geo","test_011_geo","test_2_geo"] print sorted(getList) #['test_001_geo','test_011_geo', 'test_100_geo','test_20_geo','test_2_geo']
ソートをする前に、文字と数字に分解することで多重キーによるソートを可能にします。
正規表現で re.split("(\d+)","文字列")
と分割することで文字部分と数字部分に分けることができます。
とりあえずリストをぶち込んで並び替える関数を作りました。
getList=["test_20_geo","test_100_geo","test_001_geo","test_10_geo","test_011_geo","test_2_geo"] print sortedStringList(getList) #['test_001_geo','test_2_geo','test_10_geo','test_011_geo','test_20_geo','test_100_geo']
このように、正規表現で文字と数字を分けてから多重キーを使用することで、バラバラな文字列でも数字順に並べ替えが可能になります。
正規表現について参考にさせていただきました。 uxmilk.jp
thx:[@3D_manu]多重キーのアドバイスありがとうございました。