文章参考文献《Python程序设计基础与应用》
Python笔记字符串
- 字符串编码
- 转义字符
- 字符串格式化
字符串编码
Python 3.x完全支持中文字符,默认使用UTF8编码格式,无论是一个数字、英文字母,还是一个汉字,在统计字符串长度时都按一个字符对待和处理。
>>> s = '中国山东烟台'
>>> len(s) #字符串长度,或者包含的字符个数
6
>>> s = '中国山东烟台ABCDE' #中文与英文字符同样对待,都算一个字符
>>> len(s)
11
>>> 姓名 = '张三' #使用中文作为变量名
>>> print(姓名) #输出变量的值
张三
转义字符
转义字符用法
>>> print('Hello\nWorld') #包含转义字符的字符串
Hello
World
>>> print('\101') #三位八进制数对应的字符
A
>>> print('\x41') #两位十六进制数对应的字符
A
>>> print('我是\u004d\u0072\u987a')#四位十六进制数表示Unicode字符
我是Mr顺
为了避免对字符串中的转义字符进行转义,可以使用原始字符串,在字符串前面加上字母r或R表示原始字符串,其中的所有字符都表示原始的含义而不会进行任何转义。
>>> path = 'C:\Windows\notepad.exe'
>>> print(path) #字符\n被转义为换行符
C:\Windows
otepad.exe
>>> path = r'C:\Windows\notepad.exe' #原始字符串,任何字符都不转义
>>> print(path)
C:\Windows\notepad.exe
字符串格式化
(图片来源网上)常用格式字符:
>>> x = 1235
>>> so = "%o" % x
>>> so
"2323"
>>> sh = "%x" % x
>>> sh
"4d3"
>>> se = "%e" % x
>>> se
"1.235000e+03"
>>> chr(ord("3")+1)#这里:ord()获取字节码,完成字符串3字节码加1
"4"
>>> "%s" % 65
"65"
>>> "%s" % 65333
"65333"
>>> "%d" % "555"#整型可以转化为字符串(str),但是字符串不能强转为整型
TypeError: %d format: a number is required, not str
使用format()方法进行格式化
>>> 1/3
0.3333333333333333 #这里是小数点后16位,大致可以推测为double类型
>>> print('{0:.3f}'.format(1/3)) #保留3位小数
0.333
>>> '{0:%}'.format(3.5) #格式化为百分数
'350.000000%'
>>> '{0:_},{0:_x}'.format(1000000) #Python 3.6.0及更高版本支持
'1_000_000,f_4240' #分别转化为分隔的整型数和该数字十六进制的数
>>> '{0:_},{0:_x}'.format(10000000)
'10_000_000,98_9680'
>>> print("The number {0:,} in hex is: {0:#x}, the number {1} in oct is {1:#o}".format(5555,55))
The number 5,555 in hex is: 0x15b3, the number 55 in oct is 0o67
>>> print("The number {1:,} in hex is: {1:#x}, the number {0} in oct is {0:o}".format(5555,55))
The number 55 in hex is: 0x37, the number 5555 in oct is 12663
>>> print("my name is {name}, my age is {age}, and my QQ is {qq}".format(name = "Dong Fuguo",age = 40,qq = "30646****"))
my name is Dong Fuguo, my age is 40, and my QQ is 30646****
>>> position = (5, 8, 13)
>>> print("X:{0[0]};Y:{0[1]};Z:{0[2]}".format(position))
X:5;Y:8;Z:13
学习过程中对于0[i]有疑惑,这里可以把0[i]理解为:position,就可以当成C语言的数组了。
从Python 3.6.x开始支持一种新的字符串格式化方式,官方叫做Formatted String Literals,在字符串前加字母f,含义与字符串对象format()方法类似。
>>> name = 'Dong'
>>> age = 39
>>> f'My name is {name}, and I am {age} years old.'
'My name is Dong, and I am 39 years old.'
>>> width = 10
>>> precision = 4
>>> value = 11/3
>>> f'result:{value:{width}.{precision}}'
'result: 3.667'