сортировка списка с буквенно-цифровыми символами в качестве имен файлов в подкаталоге в python

Я пытаюсь работать с файлами, которые необходимо использовать для последующей обработки. Файлы в структуре подкаталогов и имена файлов примерно такие:

  • ./resources/json
    -pdfextract
    mylist = ['pdfextract
    ['pf1109__r_td6831__425_a_b_c.pdf.page33.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page4.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page41.pdf_testing_xml.json']
    
    pdf.json','pdfextract_3_pdf.json','pdfextract_1_pdf.json'] mylist.sort()
    pdf.json
    -pdfextract_4_pdf.json
    -pdfextract_3_pdf.json
    -pdfextract
    ['pf1109__r_td6831__425_a_b_c.pdf.page33.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page4.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page41.pdf_testing_xml.json']
    
    pdf.json

Когда я просто пытаюсь отсортировать только файлы в подкаталоге ./resources/json. Оно работает.

mylist = ['pdfextract
['pf1109__r_td6831__425_a_b_c.pdf.page33.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page4.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page41.pdf_testing_xml.json']
pdf.json','pdfextract_3_pdf.json','pdfextract_1_pdf.json'] mylist.sort()

Этот, кажется, не работает. Хотя все выглядит похоже (просто строка)

['pf1109__r_td6831__425_a_b_c.pdf.page33.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page4.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page41.pdf_testing_xml.json']

person Betafish    schedule 07.08.2019    source источник
comment
Что вы имеете ввиду под не сработало? Почему вы смешиваете разделители / и \?   -  person    schedule 07.08.2019
comment
Отлично работает в python 2.7 и python 3.5, 3.6.   -  person Chris    schedule 07.08.2019
comment
Не могу воспроизвести проблему. Я попробовал это на python 3.7, и он отлично работает   -  person Arun A S    schedule 07.08.2019
comment
@ArunAS, посмотрите реальный пример (извините, пришлось создать игрушечный пример).   -  person Betafish    schedule 07.08.2019
comment
Возможный дубликат Как отсортировать список строк?   -  person darkman    schedule 07.08.2019
comment
Насколько я понял, вы говорите, что это не работает, потому что страница 33 предшествует странице 4 в вашем виде. Я думаю, это то, что вы ищете сортировка списка строк в числовом виде   -  person Arun A S    schedule 07.08.2019


Ответы (2)


sorted() отлично работает в python3

>>> mylist = ['./resources/json\\pdfextract_2_pdf.json','./resources/json\\pdfextract_3_pdf.json','./resources/json\\pdfextract_1_pdf.json']
>>> print(sorted(mylist))
['./resources/json\\pdfextract_1_pdf.json', './resources/json\\pdfextract_2_pdf.json', './resources/json\\pdfextract_3_pdf.json']
person Gábor Erdős    schedule 07.08.2019
comment
Я попробовал это на приведенном ниже примере. Кажется, это не работает. ['pf1109__r_td6831__425_a_b_c.pdf.page33.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page4.pdf_testing_xml.json', 'pf1109__r_td6831__425_a_b_c.pdf.page41.pdf_testing_xml.json'] - person Betafish; 07.08.2019
comment
@Betafish Вам может понадобиться это: stackoverflow.com/questions/3426108/ - person Andrej Kesely; 07.08.2019

по убыванию

sorted(mylist , reverse = True)

и для возрастания просто используйте

sorted(mylist , reverse = false)

or

sorted(mylist)
person Rajeev Shankhwar    schedule 07.08.2019