擅长:python、mysql、java
<p>看起来您想按数字顺序对数字字进行排序。但是你上面的例子有一些格式不好的单词需要修改,比如twentyone和fortyfour。这是解决问题的一种方法</p>
<pre><code>from word2number import w2n
main_list = ['one', 'two', 'five', 'six', 'twentyone', 'three', 'four', 'seven', 'eight', 'fortyfour']
VALID = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
TENS = ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']
renamed = []
for item in main_list:
if item in VALID or item in TENS:
renamed.append(w2n.word_to_num(item))
else:
for num in TENS:
one = item.split(num)[-1]
if one in VALID:
renamed.append(w2n.word_to_num(f'{num} {one}'))
</code></pre>
<p>输出</p>
<pre><code>>>>sorted(renamed)
[1, 2, 3, 4, 5, 6, 7, 8, 21, 44]
</code></pre>