如何验证字符属于POSIX Portable Character Set?求Python便捷校验方法
POSIX可移植字符集校验方案
Python标准库没有公开的预定义POSIX可移植字符集常量,以下是两种比手动搬运字符表更简洁可靠的实现方案:
- 方案1:基于string标准库自定义字符集(支持严格限定控制字符范围)
import string # 仅包含POSIX规定的合法控制字符 + 所有ASCII可打印字符 allowed_control = '\0\a\b\t\n\v\f\r' portable_set = set(allowed_control + string.ascii_letters + string.digits + string.punctuation + ' ') def check(sample: str) -> bool: return all(c in portable_set for c in sample)
- 方案2:ASCII编码校验(允许所有ASCII字符,代码最简洁)
如果你的校验规则允许所有ASCII范围内的字符,直接通过编码校验即可,无需导入任何模块:
def check(sample: str) -> bool: try: sample.encode("ascii") except UnicodeEncodeError: return False return True
两种方案的性能差异:短字符串使用两种方案差异极小,校验超长字符串时编码校验的性能会高于逐个字符遍历。
内容的提问来源于stack exchange,提问作者ivan golotin
相关产品推荐
相关产品推荐

