我正在处理一个程序,该程序将让用户在条目小部件中输入内容,然后将检查名称以查看其是否有效。如果是,文件将被重命名,如果不是,[会发生其他事情]。
目前,我只处理 Windows 命名规则。我从这个问题得到了它们。
我的问题是“0-31(ASCII 控制字符)”。据我所知,它们是用于处理硬件的控制字符,不允许出现在文件名中。
但是我该如何检查它们呢?
这个网站有一个表格。我可以在字符串的每个字符中使用
ord()
来查找 0-31 范围内的值。但我正在尝试使用(并学习)更多的正则表达式,并且希望通过使用它来解决问题。
我尝试使用
[\x00-\x31]
,但它不起作用,因为0-31个字符的unicode序列不同。
我尝试使用
\\[t|n|r|x]\d?\d?[a-z]?
,在我运行 chr(ord(char))
后,它确实适用于 0-31 数字。但这又回到了单独检查每个字符。
我知道我可以将字符串转换为
os.rename()
并捕获错误,但我想避免这样做。
如果可能的话,我想只使用Python内置的东西。
可以使用
[\u0000-\u001F]
或[\x00-\x1F]
来匹配“0-31(ASCII控制字符)”