Python 怎么根据字符串里的数字排序?

Python 怎么根据字符串里的数字排序?

举例,数字包含中文或者阿拉伯数字

data = [

('测试文本', '第二季 第2集'),

('测试文本', '第1季 第一集'),

('测试文本', '第1季 第2集'),

('测试文本', '第二季 第1集'),

]

我想实现这样的排序 谢谢大佬

data = [

('测试文本', '第1季 第一集'),

('测试文本', '第1季 第2集'),

('测试文本', '第二季 第1集'),

('测试文本', '第二季 第2集')

]


回答:

import re

map = {

'一': 1,

'二': 2,

'三': 3,

'四': 4,

'五': 5,

}

# 测试数据

data = [

('测试文本', '第1季 第一集'),

('测试文本', '第1季 第2集'),

('测试文本', '第二季 第1集'),

('测试文本', '第二季 第2集')

]

res = dict()

for item in data:

pattern = re.compile(r'第(.*)季 第(.*)集')

result = pattern.findall(str(item))[0]

k1 = int(map[result[0]]) * 10 if result[0] in map.keys() else int(result[0]) * 10

k2 = int(map[result[1]]) if result[1] in map.keys() else int(result[1])

res[k1 + k2] = item

result = sorted(res.items(), key=lambda x: x[0])

print(result)


回答:

data = [

('测试文本', '第二季 第2集'),

('测试文本', '第1季 第一集'),

('测试文本', '第1季 第2集'),

('测试文本', '第二季 第1集'),

]

def sort_key(item):

season, episode = item[1].split()

season_number = int(season[1:])

episode_number = int(episode[1:-1])

return season_number, episode_number

sorted_data = sorted(data, key=sort_key)

print(sorted_data)

此答案由ChatGPT生成.

以上是 Python 怎么根据字符串里的数字排序? 的全部内容, 来源链接: utcz.com/p/938765.html

回到顶部