如何在Python中检查“0-31(ASCII控制字符)”? (如果可能的话使用正则表达式)

问题描述 投票:0回答:1

我正在处理一个程序,该程序将让用户在条目小部件中输入内容,然后将检查名称以查看其是否有效。如果是,文件将被重命名,如果不是,[会发生其他事情]。

目前,我只处理 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内置的东西。

python python-3.x regex ascii control-characters
1个回答
0
投票

可以使用

[\u0000-\u001F]
[\x00-\x1F]
来匹配“0-31(ASCII控制字符)”

© www.soinside.com 2019 - 2024. All rights reserved.