2

Does Python has a built in function for string natural sort?から受け入れられた回答を実行してみました。、しかし、それは私に次のエラーを与えました:

File " < stdin >", line 4

convert = lambda text: int(text) if text.isdigit() else text 


SyntaxError: invalid syntax

誰でも助けてもらえますか?

ありがとうございました...


更新: 皆様、ご回答ありがとうございます。最初に自分のスクリプトにコードを統合しましたが、エラーが発生しました。次に、この定義を Python インタラクティブ ウィンドウ (この行のみ) でテストしたところ、同じエラーが発生しました。

私はpython/2.6.5を使用しています。奇妙なことに、このコードは私の別のコンピューター (Python 2.6.1) で実行されます。このコードはバージョン固有ですか?

4

1 に答える 1

-1

以下のコードは 2.6.x で動作します

import re

li = ['elm1', 'elm0', 'Elm18', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']

def natural_sort(l): 
    convert = lambda text: int(text) if text.isdigit() else text.lower() 
    alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ] 
    return sorted(l, key = alphanum_key)

print natural_sort(li)

コピー&ペーストでもう一度試してみてください。

于 2013-01-27T21:42:09.063 に答える