Python 怎么根据字符串里的数字排序?
举例,数字包含中文或者阿拉伯数字
data = [ ('测试文本', '第二季 第2集'),
('测试文本', '第1季 第一集'),
('测试文本', '第1季 第2集'),
('测试文本', '第二季 第1集'),
]
我想实现这样的排序 谢谢大佬
data = [ ('测试文本', '第1季 第一集'),
('测试文本', '第1季 第2集'),
('测试文本', '第二季 第1集'),
('测试文本', '第二季 第2集')
]
回答:
import remap = {
'一': 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