相关疑难解决方法(0)

Python是否具有用于字符串自然排序的内置函数?

使用Python 3.x,我有一个字符串列表,我想对其执行自然的字母排序.

自然排序: Windows中文件的排序顺序.

例如,以下列表是自然排序的(我想要的):

['elm0', 'elm1', 'Elm2', 'elm9', 'elm10', 'Elm11', 'Elm12', 'elm13']
Run Code Online (Sandbox Code Playgroud)

这是上面列表的"排序"版本(我有):

['Elm11', 'Elm12', 'Elm2', 'elm0', 'elm1', 'elm10', 'elm13', 'elm9']
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个行为与第一个类似的排序函数.

python sorting python-3.x

249
推荐指数
9
解决办法
8万
查看次数

浮点数的正则表达式

我有一个匹配浮点数的任务.我为它写了以下正则表达式:

[-+]?[0-9]*\.?[0-9]*
Run Code Online (Sandbox Code Playgroud)

但它显示错误说:

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )
Run Code Online (Sandbox Code Playgroud)

但据我所知,我们还需要使用转义字符..请纠正我错在哪里.

regex

87
推荐指数
6
解决办法
15万
查看次数

os.walk迭代迭代的顺序是什么?

我担心文件和目录的顺序os.walk().如果我有这些目录,1,10,11,12,2,20,21,22,3,30,31,32,什么是输出列表的顺序?

它是按数值排序的吗?

1 2 3 10 20 30 11 21 31 12 22 32
Run Code Online (Sandbox Code Playgroud)

或者按ASCII值排序,就像给出的那样ls

1 10 11 12 2 20 21 22 3 30 31 32
Run Code Online (Sandbox Code Playgroud)

另外,我该如何获得特定的排序?

python sorting os.walk

60
推荐指数
3
解决办法
4万
查看次数

如何用python中的图像制作电影

我目前试图用图像制作电影,但我找不到任何有用的东西.

到目前为止,这是我的代码:

import time

from PIL import  ImageGrab

x =0

while True:
    try:
        x+= 1
        ImageGrab().grab().save('img{}.png'.format(str(x))
    except:
        movie = #Idontknow
        for _ in range(x):
            movie.save("img{}.png".format(str(_)))

movie.save()
Run Code Online (Sandbox Code Playgroud)

python video screenshot image

24
推荐指数
4
解决办法
7万
查看次数

PHP的natsort函数的Python模拟(使用"自然顺序"算法对列表进行排序)

我想知道Python中是否有类似PHP natsort函数的东西?

l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
l.sort()
Run Code Online (Sandbox Code Playgroud)

得到:

['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']
Run Code Online (Sandbox Code Playgroud)

但我想得到:

['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']
Run Code Online (Sandbox Code Playgroud)

UPDATE

解决方案基于此链接

def try_int(s):
    "Convert to integer if possible."
    try: return int(s)
    except: return s

def natsort_key(s):
    "Used internally to get a tuple by which s is sorted."
    import re
    return map(try_int, re.findall(r'(\d+|\D+)', s))

def natcmp(a, b):
    "Natural string comparison, case sensitive."
    return cmp(natsort_key(a), natsort_key(b))

def natcasecmp(a, b):
    "Natural string comparison, ignores case."
    return natcmp(a.lower(), b.lower())

l.sort(natcasecmp);
Run Code Online (Sandbox Code Playgroud)

python sorting natsort

22
推荐指数
2
解决办法
2万
查看次数

如何使用python按特定顺序对文件名进行排序

有没有一种简单的方法来对python中的目录中的文件进行排序?我记得的文件按顺序排列

file_01_001
file_01_005
...
file_02_002
file_02_006
...
file_03_003
file_03_007
...
file_04_004
file_04_008
Run Code Online (Sandbox Code Playgroud)

我想要的是类似的东西

file_01_001
file_02_002
file_03_003
file_04_004
file_01_005
file_02_006
...
Run Code Online (Sandbox Code Playgroud)

我目前正在使用glob以下目录打开它们:

for filename in glob(path):    
    with open(filename,'rb') as thefile:
        #Do stuff to each file
Run Code Online (Sandbox Code Playgroud)

因此,当程序执行所需的任务时,如果我一次执行多个文件,由于文件的排序,它会提供不正确的数据.有任何想法吗?

python sorting io python-3.x

6
推荐指数
2
解决办法
2万
查看次数

按顺序依次读取文件

我在文件夹中有许多文件,其名称遵循约定:

0.1.txt, 0.15.txt, 0.2.txt, 0.25.txt, 0.3.txt, ...
Run Code Online (Sandbox Code Playgroud)

我需要逐个阅读它们并操纵它们内部的数据.目前我用命令打开每个文件:

import os
# This is the path where all the files are stored.
folder path = '/home/user/some_folder/'
# Open one of the files,
for data_file in os.listdir(folder_path):
    ...
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有按特定的顺序读取文件(不确定它是如何选择它们)而我需要从具有最小数字作为文件名的那个开始读取它们,然后是具有直接较大数字的那个,依此类推直到最后一个.

python file-io

5
推荐指数
1
解决办法
9953
查看次数

Django - order_by() 字符和数字

我必须对包含主机名的对象列表进行排序。

主机名采用以下格式:h1, h5, h10, h12, h12-abc, h1000, x10

如果我使用 order_by('hostname') 它将像这样排序:

h1, h10, h1000, h12, h12-abc, h5, x10
Run Code Online (Sandbox Code Playgroud)

我将如何实现这样的排序:

h1, h5, h10, h12, h12-abc, h1000, x10
Run Code Online (Sandbox Code Playgroud)

主机名始终以字符开头,然后是 1-4 位数字和部分扩展名,例如“-abc”。

我想我必须使用 Substr() 来提取数字并以某种方式对数字进行排序,“10”不会列在“5”之前。

通过搜索,我发现了一些带有 extra() 的旧示例,但 Django 文档说它将在未来被弃用,并且“使用此方法作为最后的手段” https://docs.djangoproject.com/en/2.1/ref/models /查询集/#extra

面向未来的方法是什么?

django postgresql django-queryset

3
推荐指数
1
解决办法
1880
查看次数

Sort函数中的构建不起作用

如果文本文件中的数据小于10(例如4,2,3,1),它将相应地对数据进行排序.但是,如果数据超过10(例如(3,199,4,5),它将排序为199,3,4,5而不是升序.请帮助

def readFile():
        try:
            fileName = open("haha.txt",'r')
            data = fileName.read().split()
            data.sort() 
            print(data)

        except IOError:
                    print("Error: File do not exist")
                    return
Run Code Online (Sandbox Code Playgroud)

python

1
推荐指数
1
解决办法
101
查看次数

排序编号列表

我似乎无法找到有关如何正确排序这样的列表的任何信息.我的列表看起来像这样

["1. Banana", "2. Pear", "11. Apple", "5. Grapes", "4. Orange"]
Run Code Online (Sandbox Code Playgroud)

使用sorted()离开我与以下

['1. Banana', '11. Apple', '2. Pear', '3. Orange', '4. Grapes']
Run Code Online (Sandbox Code Playgroud)

我希望它能像这样出来

['1. Banana', '2. Pear', '3. Orange', '4. Grapes', '11. Apple']
Run Code Online (Sandbox Code Playgroud)


如果它增加了任何复杂性我需要使用它来使用特定键的值对字典列表进行排序,所以我当前的代码是

list.sort(key=lambda k: k["key"])
Run Code Online (Sandbox Code Playgroud)

python sorting list

0
推荐指数
1
解决办法
86
查看次数

使用字符串中的数字对 OS Listdir 进行排序

我有一个文件夹。在这个文件夹中的文件看起来有点像这样:

'page_121.png', 'page_122_png', 'page_123.png'... etc

当在 Python 中运行这段代码时:

sorted(os.listdir())

返回类似这样的内容:

'page_276.png', 'page_277.png', 'page_278.png', 'page_279.png', 'page_28.png', 'page_280.png', 'page_281.png', 'page_282.png'

请注意它如何按字母数字对它们进行排序,但从 279 跳到 28,这是有道理的,但不是我想要的结果。我怎样才能得到它,以便返回的数组按照数字最小到最大的顺序排列,这样就在和page_28.png之间结束了?page_27.pngpage_29.png

python

0
推荐指数
1
解决办法
2464
查看次数