ascii() 是 Python 的内置函数,用于生成对象的纯 ASCII 表示,非 ASCII 字符会被转义为 \x、\u 或 \U 序列:
核心行为
-
转义非 ASCII 字符
print(ascii('你好')) 输出: '\u4f60\u597d' print(ascii('αβ')) 输出: '\u03b1\u03b2' -
对字符串的处理
返回的字符串始终用单引号' '包裹,并转义内部特殊字符:ascii("a\nb") 输出: "'a\\nb'" -
非字符串对象的处理
调用对象的__repr__()方法后转义非 ASCII 字符:ascii([1, '中文']) 输出: "[1, '\\u4e2d\\u6587']"
典型应用场景
- 调试国际化文本:快速检查字符串中的 Unicode 字符
- 安全日志记录:避免编码问题导致日志损坏
- 数据序列化预处理:确保输出兼容 ASCII 系统
与 repr() 的对比
| 函数 | ASCII 安全 | 保留原生字符 | 输出示例 |
|---|---|---|---|
ascii() |
✅ | ❌ | '\\u4e2d\\u6587' |
repr() |
❌ | ✅ | '中文' |
注意:
- 对
bytes类型对象无效(需先解码为str)- 转义后的结果可直接用
eval()还原原对象