Python 字符串的数字排序

如何让 Python 排序表现得像sort -nGNU coreutils 一样?


这是我的images.txt:


Vol. 1/Vol. 1 - Special 1/002.png

Vol. 1/Chapter 2 example text/002.png

Vol. 1/Vol. 1 Extra/002.png

Vol. 1/Chapter 2 example text/001.png

Vol. 1/Vol. 1 Extra/001.png

Vol. 1/Chapter 1 example text/002.png

Vol. 1/Vol. 1 - Special 1/001.png

Vol. 1/Chapter 1 example text/001.png

当我运行这个 Bash 脚本时:


#!/bin/bash


cat images.txt | sort -n

我得到以下输出:


Vol. 1/Chapter 1 example text/001.png

Vol. 1/Chapter 1 example text/002.png

Vol. 1/Chapter 2 example text/001.png

Vol. 1/Chapter 2 example text/002.png

Vol. 1/Vol. 1 Extra/001.png

Vol. 1/Vol. 1 Extra/002.png

Vol. 1/Vol. 1 - Special 1/001.png

Vol. 1/Vol. 1 - Special 1/002.png

但是当我运行这个 Python 脚本时:


#!/usr/bin/env python3


images = []


with open("images.txt") as images_file:

    for image in images_file:

        images.append(image)


images = sorted(images)


for image in images:

    print(image, end="")

我得到以下输出,这不是我需要的:


Vol. 1/Chapter 1 example text/001.png

Vol. 1/Chapter 1 example text/002.png

Vol. 1/Chapter 2 example text/001.png

Vol. 1/Chapter 2 example text/002.png

Vol. 1/Vol. 1 - Special 1/001.png

Vol. 1/Vol. 1 - Special 1/002.png

Vol. 1/Vol. 1 Extra/001.png

Vol. 1/Vol. 1 Extra/002.png

如何使用 Python 获得与使用 Bash 和sort -n.


弑天下
浏览 211回答 2
2回答

翻过高山走不出你

虽然我不是 牛牛专家,它'-'的顺序似乎与 Python 不同。此特定问题的快速解决方法是在排序时替换' - '为' ':L = sorted(L, key=lambda x: x.replace(' - ', ' '))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python