Как проверить наличие «0-31 (управляющие символы ASCII)» в Python? (используя регулярное выражение, если возможно)

Я имею дело с программой, которая позволяет пользователю вводить данные в виджет ввода, затем имя проверяется на допустимость. Если это так, файл переименовывается, если нет, [происходит что-то еще].

На данный момент я имею дело только с правилами именования 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, если это возможно.

Савелий
Вопрос задан24 мая 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.