文章目录
- 一、前言
- 二、正则表达式与Python中的实现
- 1.字符串构造
- 2. 字符串截取
- 3. 字符串格式化输出
- 4. 字符转义符
- a. 常用字符转义符
- 续行符
- 换行符
- 制表符
- 双引号
- 单引号
- 反斜杠符号
- 回车符
- 退格符
- b. ASCII编码
- 转义字符
- 进制转换
- 2 进制
- 8 进制
- 10 进制
- 16 进制
- 进制转换函数
- c. Unicode字符
- `\uhhhh`示例
- `\Uhhhhhhhh`示例
一、前言
转义字符在处理输入输出、正则表达式、字符串拼接等场景下经常被用到,本文将介绍python中的字符转义符。
二、正则表达式与Python中的实现
1.字符串构造
2. 字符串截取
【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取
3. 字符串格式化输出
【自然语言处理】NLP入门(二):1、正则表达式与Python中的实现(2):字符串格式化输出(%、format()、f-string)
4. 字符转义符
字符转义符是在编程语言中使用的特殊符号,用于表示一些特殊的字符或者具有特殊含义的字符,在很多编程语言中,特定的字符前面加上反斜杠 \
就构成了一个转义字符。
a. 常用字符转义符
在Python中,常用的字符转义符包括:
转义字符 | 描述 |
---|---|
\(行尾) | 续行符 |
\n | 换行符 |
\t | 横向制表符 |
\v | 纵向制表符 |
\" | 双引号 |
\’ | 单引号 |
\\ | 一个反斜杠符号\ |
\r | 回车符 |
\b | 退格符 |
\f | 换页符 |
续行符
print("这是一行\
字符串")
- 输出:这是一行字符串
换行符
print("第一行\n第二行")
- 输出:
第一行
第二行
制表符
print("第一列\t第二列")
- 输出:
第一列 第二列
双引号
print("He said, \"Python is amazing!\"")
- 输出:He said, “Python is amazing!”
等效于:
print('He said, "Python is amazing!\"')
单引号
print('She said, \'I love Python!\'')
- 输出:She said, ‘I love Python!’
等效于:
print("She said, 'I love Python!'")
反斜杠符号
print("This is a backslash: \\")
- 输出:This is a backslash: \
回车符
print("Hello\rWorld")
- 输出:World
退格符
print("Hello\bWorld")
- 输出:HellWorld
b. ASCII编码
Character | Octal | Decimal | Hexadecimal |
---|---|---|---|
3位8进制数 | 十进制数 | 2位16进制数 | |
NUL (null) | 000 | 0 | 00 |
SOH (start of heading) | 001 | 1 | 01 |
STX (start of text) | 002 | 2 | 02 |
ETX (end of text) | 003 | 3 | 03 |
EOT (end of transmission) | 004 | 4 | 04 |
ENQ (enquiry) | 005 | 5 | 05 |
ACK (acknowledge) | 006 | 6 | 06 |
BEL (bell) | 007 | 7 | 07 |
BS (backspace) | 010 | 8 | 08 |
HT (horizontal tab) | 011 | 9 | 09 |
LF (line feed) | 012 | 10 | 0A |
VT (vertical tab) | 013 | 11 | 0B |
FF (form feed) | 014 | 12 | 0C |
CR (carriage return) | 015 | 13 | 0D |
SO (shift out) | 016 | 14 | 0E |
SI (shift in) | 017 | 15 | 0F |
DLE (data link escape) | 020 | 16 | 10 |
DC1 (device control 1) | 021 | 17 | 11 |
DC2 (device control 2) | 022 | 18 | 12 |
DC3 (device control 3) | 023 | 19 | 13 |
DC4 (device control 4) | 024 | 20 | 14 |
NAK (negative acknowledge) | 025 | 21 | 15 |
SYN (synchronous idle) | 026 | 22 | 16 |
ETB (end of transmission block) | 027 | 23 | 17 |
CAN (cancel) | 030 | 24 | 18 |
EM (end of medium) | 031 | 25 | 19 |
SUB (substitute) | 032 | 26 | 1A |
ESC (escape) | 033 | 27 | 1B |
FS (file separator) | 034 | 28 | 1C |
GS (group separator) | 035 | 29 | 1D |
RS (record separator) | 036 | 30 | 1E |
US (unit separator) | 037 | 31 | 1F |
SPACE | 040 | 32 | 20 |
! | 041 | 33 | 21 |
" | 042 | 34 | 22 |
# | 043 | 35 | 23 |
$ | 044 | 36 | 24 |
% | 045 | 37 | 25 |
& | 046 | 38 | 26 |
’ | 047 | 39 | 27 |
( | 050 | 40 | 28 |
) | 051 | 41 | 29 |
* | 052 | 42 | 2A |
+ | 053 | 43 | 2B |
, | 054 | 44 | 2C |
- | 055 | 45 | 2D |
. | 056 | 46 | 2E |
/ | 057 | 47 | 2F |
0 | 060 | 48 | 30 |
1 | 061 | 49 | 31 |
2 | 062 | 50 | 32 |
3 | 063 | 51 | 33 |
4 | 064 | 52 | 34 |
5 | 065 | 53 | 35 |
6 | 066 | 54 | 36 |
7 | 067 | 55 | 37 |
8 | 070 | 56 | 38 |
9 | 071 | 57 | 39 |
: | 072 | 58 | 3A |
; | 073 | 59 | 3B |
< | 074 | 60 | 3C |
= | 075 | 61 | 3D |
> | 076 | 62 | 3E |
? | 077 | 63 | 3F |
@ | 100 | 64 | 40 |
A | 101 | 65 | 41 |
B | 102 | 66 | 42 |
C | 103 | 67 | 43 |
D | 104 | 68 | 44 |
E | 105 | 69 | 45 |
F | 106 | 70 | 46 |
G | 107 | 71 | 47 |
H | 110 | 72 | 48 |
I | 111 | 73 | 49 |
J | 112 | 74 | 4A |
K | 113 | 75 | 4B |
L | 114 | 76 | 4C |
M | 115 | 77 | 4D |
N | 116 | 78 | 4E |
O | 117 | 79 | 4F |
P | 120 | 80 | 50 |
Q | 121 | 81 | 51 |
R | 122 | 82 | 52 |
S | 123 | 83 | 53 |
T | 124 | 84 | 54 |
U | 125 | 85 | 55 |
V | 126 | 86 | 56 |
W | 127 | 87 | 57 |
X | 130 | 88 | 58 |
Y | 131 | 89 | 59 |
Z | 132 | 90 | 5A |
[ | 133 | 91 | 5B |
\ | 134 | 92 | 5C |
] | 135 | 93 | 5D |
^ | 136 | 94 | 5E |
_ | 137 | 95 | 5F |
` | 140 | 96 | 60 |
a | 141 | 97 | 61 |
b | 142 | 98 | 62 |
c | 143 | 99 | 63 |
d | 144 | 100 | 64 |
e | 145 | 101 | 65 |
f | 146 | 102 | 66 |
g | 147 | 103 | 67 |
h | 150 | 104 | 68 |
i | 151 | 105 | 69 |
j | 152 | 106 | 6A |
k | 153 | 107 | 6B |
l | 154 | 108 | 6C |
m | 155 | 109 | 6D |
n | 156 | 110 | 6E |
o | 157 | 111 | 6F |
p | 160 | 112 | 70 |
q | 161 | 113 | 71 |
r | 162 | 114 | 72 |
s | 163 | 115 | 73 |
t | 164 | 116 | 74 |
u | 165 | 117 | 75 |
v | 166 | 118 | 76 |
w | 167 | 119 | 77 |
x | 170 | 120 | 78 |
y | 171 | 121 | 79 |
z | 172 | 122 | 7A |
{ | 173 | 123 | 7B |
| | 174 | 124 | 7C |
} | 175 | 125 | 7D |
~ | 176 | 126 | 7E |
DEL (delete) | 177 | 127 | 7F |
转义字符
转义字符 | 描述 |
---|---|
\ooo | 3位8进制数ooo对应的字符 |
\xhh | 2位16进制数hh对应的字符 |
- 使用
\ooo
表示3位8进制数对应的字符:
print('\101') # 输出字符 'A'
\101
表示八进制数 101,对应的字符是 ‘A’。
- 使用
\xhh
表示2位16进制数对应的字符:
print('\x41') # 输出字符 'A'
\x41
表示十六进制数 41,对应的字符是 ‘A’。
进制转换
2 进制
- 使用"0b"前缀来表示二进制数。
print(0b1010)
8 进制
- 使用"0o"前缀来表示八进制数。
print(0o12)
10 进制
- 显然直接表示的就是十进制数
print(10)
16 进制
- 使用"0x"前缀来表示十六进制数。
print(0x0A)
- 上述均输出:10
进制转换函数
可以使用内置函数 bin()
、oct()
、hex()
来进行转换:
bin()
函数:将一个整数转换为二进制表示。
print(bin(10)) # 输出 '0b1010'
oct()
函数:将一个整数转换为八进制表示。
print(oct(10)) # 输出 '0o12'
hex()
函数:将一个整数转换为十六进制表示。
print(hex(10)) # 输出 '0xa'
c. Unicode字符
Unicode是一种字符编码方案,用于表示世界上几乎所有语言的字符,包括字母、数字、标点符号、符号、表情符号、特殊符号和控制字符等。它为每个字符分配了一个唯一的数字,称为码点(code point),用于在计算机系统中进行字符的表达。Unicode编码目前已经超过了1.1万个字符,涵盖了世界上大多数语言文字的所有字符。
Unicode的编码空间可以分为多个平面(plane),每个平面包含65536个码位(code point)。最早的Unicode版本(Unicode 1.0)只定义了第一个平面,称为基本多文种平面(Basic Multilingual Plane,BMP),涵盖了绝大多数常用字符。除了BMP平面外,Unicode还定义了辅助平面(Supplementary Planes)。辅助平面包含了一些特殊字符,如特殊符号、古代文字、表情符号等。目前已经定义了17个辅助平面,但并不是所有的辅助平面都是完全填满的。
Unicode字符可以通过不同的编码方案进行表示,其中最常见的是UTF-8、UTF-16和UTF-32。这些编码方案使用不同的字节顺序和编码方式将码点翻译成计算机可以理解的二进制形式。
转义字符 | 描述 |
---|---|
\uhhhh | 4位16进制数hhhh表示的Unicode字符 |
\Uhhhhhhhh | 8位16进制数hhhhhhhh表示的Unicode字符 |
print("\u4F60\u597D")
- 输出:你好
\uhhhh
示例
# 版权符号
print('\u00A9') # 输出:©
# 注册商标符号
print('\u00AE') # 输出:®
# 音符
print('\u266B') # 输出:♪
# 电话符号
print('\u260E') # 输出:☎
# 和平符号
print('\u262E') # 输出:☮
# 国际象棋符号
print('\u2656') # 输出:♖
# 十字架符号
print('\u271D') # 输出:✝
# 太阳符号
print('\u2600') # 输出:☀
# 雪花符号
print('\u2744') # 输出:❄
# 蛇座符号
print('\u265B') # 输出:♛
# 闹钟符号
print('\u23F0') # 输出:⏰
\Uhhhhhhhh
示例
# 麻将符号
print('\U0001F004') # 输出:🀄
# 笑脸符号
print('\U0001F604') # 输出:😄
# 心形符号
print('\U0001F496') # 输出:💖
# 手势符号
print('\U0001F44B') # 输出:👋
# 花朵符号
print('\U0001F33B') # 输出:🌻
# 月亮符号
print('\U0001F319') # 输出:🌙
# 爱心符号
print('\U0001F499') # 输出:💙