上一篇
Python ASCII码与字符转换详解教程 | Python编程指南
- Python
- 2025-08-07
- 1127
Python ASCII码与字符转换详解
全面掌握Python中字符与ASCII码的相互转换方法
1. ASCII码基础知识
ASCII(American Standard Code for Information Interchange)是一种基于拉丁字母的字符编码系统,主要用于显示现代英语和其他西欧语言。
ASCII码的主要特点:
- 使用7位二进制数表示一个字符(共128个字符)
- 包含33个控制字符(不可显示)
- 包含95个可显示字符(字母、数字、标点符号)
- 标准ASCII码范围:0-127
常见ASCII码示例:
- 65 - 90:大写字母A-Z
- 97 - 122:小写字母a-z
- 48 - 57:数字0-9
- 32:空格
- 10:换行符
2. chr()函数详解
Python中的chr()
函数用于将整数(ASCII码)转换为对应的字符。
函数语法:
chr(i)
参数说明:
i
:整数,表示Unicode码位(对于ASCII,范围0-127)- 返回值:表示Unicode字符的字符串
使用示例:
# 将ASCII码转换为字符 print(chr(65)) # 输出: A print(chr(97)) # 输出: a print(chr(48)) # 输出: 0 print(chr(33)) # 输出: ! print(chr(10)) # 输出: 换行符
3. ord()函数详解
Python中的ord()
函数用于获取字符的ASCII码值(或Unicode码位)。
函数语法:
ord(c)
参数说明:
c
:长度为1的字符串(单个字符)- 返回值:字符对应的整数(ASCII码)
使用示例:
# 获取字符的ASCII码 print(ord('A')) # 输出: 65 print(ord('a')) # 输出: 97 print(ord('0')) # 输出: 48 print(ord('!')) # 输出: 33 print(ord('\n')) # 输出: 10
4. 常见应用场景
1. 生成字母表
# 生成大写字母表 upper_letters = [chr(i) for i in range(65, 91)] print(upper_letters) # ['A', 'B', 'C', ... , 'Z'] # 生成小写字母表 lower_letters = [chr(i) for i in range(97, 123)] print(lower_letters) # ['a', 'b', 'c', ... , 'z']
2. 简单加密解密
# 凯撒加密(偏移3位) def caesar_encrypt(text): result = "" for char in text: if char.isalpha(): shift = 3 base = ord('A') if char.isupper() else ord('a') result += chr((ord(char) - base + shift) % 26 + base) else: result += char return result encrypted = caesar_encrypt("HELLO") print(encrypted) # 输出: KHOOR
3. 数据清洗与转换
# 移除字符串中的控制字符 def remove_control_chars(text): return ''.join(char for char in text if 31 < ord(char) < 127) dirty_text = "Hello\x00World!\x07\x0B" clean_text = remove_control_chars(dirty_text) print(clean_text) # 输出: HelloWorld!
5. 常见错误处理
1. 超出有效范围
try: # 尝试转换超出范围的数字 print(chr(1000)) # 在ASCII范围外但有效的Unicode print(chr(-1)) # 无效的码位 except ValueError as e: print(f"错误: {e}")
解决方案: 确保输入的整数在0到1,114,111之间(Unicode范围)
2. 输入非单个字符
try: # ord()函数只接受单个字符 print(ord("abc")) # 传入多个字符 except TypeError as e: print(f"错误: {e}")
解决方案: 确保传递给ord()的是长度为1的字符串
6. 扩展知识:Unicode
虽然ASCII码只能表示128个字符,但现代Python使用Unicode标准来表示文本,支持全球几乎所有语言的字符。
Unicode与ASCII的关系
- Unicode是ASCII的超集
- 前128个Unicode字符与ASCII完全相同
- Unicode为每个字符分配唯一的码位(code point)
- Python 3全面支持Unicode
Unicode示例
# 使用chr()显示Unicode字符 print(chr(8364)) # 欧元符号: € print(chr(9731)) # 雪花符号: ☃ print(chr(128516)) # 笑脸: 😄 # 使用ord()获取Unicode码位 print(ord('€')) # 8364 print(ord('☃')) # 9731 print(ord('😄')) # 128516
7. 综合示例
ASCII艺术生成器
def create_ascii_art(text, font="block"): """将文本转换为简单的ASCII艺术形式""" if font == "block": # 使用块状字符替换字母 mapping = { 'A': chr(9608) + chr(9608), 'B': chr(9617) + chr(9617), 'C': chr(9618) + chr(9618), # 简化的映射 'default': chr(9608) + chr(9608) } result = [] for char in text.upper(): result.append(mapping.get(char, mapping['default'])) return ' '.join(result) else: return text art = create_ascii_art("PYTHON") print(art)
ASCII码转换工具
def ascii_converter(): """交互式ASCII转换工具""" print("ASCII码转换工具") print("1. 字符转ASCII码") print("2. ASCII码转字符") choice = input("请选择操作(1/2): ") if choice == '1': char = input("请输入单个字符: ") if len(char) != 1: print("错误:请输入单个字符") else: print(f"ASCII码值: {ord(char)}") elif choice == '2': try: code = int(input("请输入ASCII码(0-127): ")) if 0 <= code <= 127: print(f"对应字符: {chr(code)}") else: print("错误:请输入0-127之间的整数") except ValueError: print("错误:请输入有效的整数") else: print("无效选择") # 运行转换工具 ascii_converter()
本文由JiangTaiChen于2025-08-07发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20257561.html
发表评论