У меня есть папка с множеством файлов CSV с разными именами. Я хочу работать только с файлами, имя которых состоит только из чисел, хотя у меня нет информации о диапазоне чисел в заголовках файлов.

Например, у меня есть '' 'file_list = [123.csv, not.csv, 75839.csv, 2.csv, bad.csv, 23bad8.csv]' '' и я хотел бы работать только с [123.csv , 75839.csv, 2.csv]

Я пробовал следующий код:

'' 'для f в file_list:

Если f.startwith ('1' или '2' или '3' ..... или '9'):

# делать что-нибудь '' '

Но это не проблема, если имя файла начинается с числа, но позже все еще включает буквы или другие символы

Спасибо за помощь!

1
Gony 11 Окт 2021 в 19:39

2 ответа

Лучший ответ

Вы можете использовать Regex для следующих действий:

import re
lst_of_files = ['temo1.csv', '12321.csv', '123123.csv', 'fdao123.csv', '12312asdv.csv', '123otk123.csv', '123.txt']
pattern = re.compile('^[0-9]+.csv')
newlst = [re.findall(pattern, filename) for filename in lst_of_files if len(re.findall(pattern, filename)) > 0]
print(newlst)
1
Ofek Glick 11 Окт 2021 в 17:50

Сделать это можно так:

file_list = ["123.csv", "not.csv", "75839.csv", "2.csv", "bad.csv", "23bad8.csv"]
for f in file_list:
    name, ext = f.rsplit(".", 1)    # split at the rightmost dot
    if name.isnumeric():
        print(f)

Выход

123.csv
75839.csv
2.csv
1
BoarGules 11 Окт 2021 в 16:45