Я имею дело с программой, которая позволяет пользователю вводить данные в виджет ввода, затем имя проверяется на допустимость. Если это так, файл переименовывается, если нет, [происходит что-то еще].
На данный момент я имею дело только с правилами именования Windows. Я взял их из этого вопроса.
Моя проблема связана с "0-31 (управляющие символы ASCII)". Я понимаю, что это управляющие символы, используемые для работы с оборудованием, и их нельзя использовать в имени файла.
Но как мне их проверить?
На этом сайте есть таблица с ними. И я мог бы использовать ord()
в каждом символе строки, чтобы найти значение в диапазоне 0-31. Но я пытаюсь использовать (и изучать) немного больше регулярных выражений и хотел бы решить проблему с их помощью.
Я пробовал использовать [\x00-\x31]
, но это не сработало, так как последовательность Unicode для символов 0-31 отличается.
Я пробовал использовать \\[t|n|r|x]\d?\d?[a-z]?
, и это сработало для чисел 0-31 после того, как я запустил chr(ord(char))
для них. Но это возвращает нас к проверке каждого символа по отдельности.
Я знаю, что я мог бы просто привести строку к os.rename()
и поймать ошибку, но я хотел бы избежать этого.
Я хотел бы использовать только то, что уже встроено в Python, если это возможно.