Python学习笔记(二)

Python学习笔记(二)

从数值类型到字符串相关操作

  • Python学习笔记(二)
  • 一. Python数值类型
    • 整数
    • 浮点数
    • 复数
  • 二. Python bytes
    • 字符串和bytes
  • 三. 转义字符
  • 四. 格式化输出
    • 最小输出宽度
    • 对齐方式
    • 小数精度
  • 五. 字符串操作
    • 切片
    • 大小写转换
    • 删除指定字符
    • 分割和连接

一. Python数值类型

整数

整数类型:int 表示为长整型
Python长整数仅受限于用户计算机的虚拟内存总数

在C语言中:
long型所表示的范围为:-2147483648 ~ +2147483647 (4 Bytes)
long long所表示的范围为:-9223372036854775808 ~ +9223372036854775807 (8 Bytes)

浮点数

浮点数类型:float 
Python中浮点数受到17位有效数字的限制,如果超过17位要用科学计数法来表示

浮点数标准是IEEE754
规定了4种浮点数类型:单精度、双精度、延伸单精度、延伸双精度

浮点数在计算机中是以二进制来表示的,指数称为阶码、有效数称为尾数
有些时候浮点数在转换以及运算过程中会产生一些误差
用浮点数进行比较的时候最好不要用==来比较,而是做差,如果差小于一个很小很小的数,就认为这两个浮点数相等。

复数

可以使用.real来取出复数的实部,使用.imag取出复数的虚部
复数的表示是a+bi,在Python中用j代表i,即a+bj

求平面上两个点之间的距离
>>> abs(1+1j)
1.4142135623730951

二. Python bytes

bytes 只负责以二进制形式来存储数据

字符串和bytes

可以通过字符串来创建 bytes 对象,或将字符串转换成 bytes 对象

如果字符串的内容都是 ASCII 字符,在字符串前面添加b前缀就可以转换成 bytes
b1 = b'youchanwill'

调用bytes,可以将字符串按照指定的字符集转换成 bytes;如果不指定字符集,那么默认采用 UTF-8
>>>b1 = bytes()
>>>b1 = bytes('youchanwill', encoding='UTF-8') #encoding:编码方式

通过encode()将字符串转换成 bytes,如果不指定字符集,那么默认采用UTF-8
>>>b1 = "youchanwill".encode('UTF-8')
>>>print(b1)
b'youchanwill'

对于非ASCII 字符,print输出的是它的字符编码值(十六进制形式),而不是字符本身

通过decode()bytes对象转换为字符串
>>> str1 = b1.decode('UTF-8')
>>> print(str1)
youchanwill

三. 转义字符

ASCII 编码为每个字符都分配了唯一的编号,称为编码值。
在 Python 中,一个 ASCII 字符可以用它的编码值表示。这种使用编码值来表示字符的方式称为转义字符(Escape Character)。

Python中的转义字符只能使用八进制或者十六进制,转义字符以\0或\x开头,\0和\x后面最多只能跟两位数字

以\0开头表示后跟八进制形式的编码,不能表示所有的 ASCII 字符
以\x开头表示后跟十六进制形式的编码值

>>>str1 = "\061\062\063" #使用八进制形式的转义字符无法表示xyz,的编码值转换成八进制以后有三位
>>>str2 = "\x31\x32\x33\x78\x79\x7A"
>>>print(str1)
>>>print(str2)
123
123xyz

Python支持的转义字符:

转义字符 说明
\n 换行符,将光标位置移到下一行开头
\r 回车符,将光标位置移到本行开头
\t 水平制表符,即 Tab 键,相当于四个空格
\b 退格(Backspace),将光标位置移到前一列
\\ 反斜线
\" 双引号
\’ 单引号
\ 在字符串行尾的续行符

四. 格式化输出

print() 函数使用以%开头的转换说明符对各种类型的数据进行格式化输出
转换说明符(Conversion Specifier)只是一个占位符,它会被后面表达式的值代替

转换说明符 作用
%d、%i 转换为带符号的十进制整数
%o 转换为带符号的十进制整数
%x、%X 转换为带符号的十六进制整数
%e、%E 转化为科学计数法表示的浮点数
%f、%F 转化为十进制浮点数
%g 智能选择使用 %f 或 %e 格式
%G 智能选择使用 %F 或 %E 格式
%c 格式化字符及其 ASCII 码
%r 使用 repr() 函数将表达式转换为字符串
%s 使用 str() 函数将表达式转换为字符串
name = "you"
print("%schanwill!" % name)print()函数中,由引号包围的是格式化字符串相当于一个模板,可以放置一些转换说明符,最终会被后面的变量的值所替代

name = "you"
name1 = "chanwill"
age = 1016
print("%s%s%d" % (name, name1, age))
有几个占位符,后面就跟着几个表达式,多个表达式必须使用小括号( )包围

最小输出宽度

%10d 表示输出的整数宽度至少为 10
%20s 表示输出的字符串宽度至少为 20

对于整数和字符串,当数据的实际宽度小于指定宽度时,会在左侧以空格补齐;当数据的实际宽度大于指定宽度时,会按照数据的实际宽度输出
>>>n = 12345
>>>print("n(10):%10d" % n)
>>>print("n(3):%3d" % n)
n(10):     12345
n(3):12345

当数据的实际宽度足够时,指定的最小宽度没有实际意义

对齐方式

Python 允许在最小宽度之前增加一个标志来改变对齐方式

标志 说明
指定左对齐
+ 表示输出的数字总要带着符号;正数带+,负数带–
0 表示宽度不足时补充 0
  • 对于整数,指定左对齐时,在右边补 0 是没有效果的
  • 对于小数,以上三个标志可以同时存在
  • 对于字符串,只能使用 – 标志
>>>b = 10.16
>>>print("b(-+0):%-+010f" % b)# %-+010f 表示最小宽度为10,左对齐,带上符号
b(-+0):+10.160000

小数精度

对于浮点数,print() 允许指定小数的输出精度

精度值需要放在最小宽度之后,中间用点号.隔开;也可以不写最小宽度,只写精度
%m.nf  %.nf #m表示最小宽度,n表示输出精度 .必须存在

>>>pi = 3.1415926
>>>print("%+08.2f" % pi) # 最小宽度为8,小数点后保留2位,左边补0,带符号
+0003.14

五. 字符串操作

切片

strname[index] 
strname 字符串名字,index 表示索引值
  • 当以字符串的左端为起点时,字符串的第一个字符的索引为 0
  • 当以字符串的右端为起点时,字符串的倒数第一个字符的索引为 -1
>>>name = 'youchanwill'
>>>print(name[0]) #获取索引为0的字符
y

>>>name = 'youchanwill'
>>>print(name[-1]) #获取索引为-1的字符
l
strname[start : end : step]
strname 字符串名字
start:表示要截取的第一个字符所在的索引(截取时包含该字符),不指定默认为0
end:表示要截取的最后一个字符所在的索引(截取时不包含该字符),不指定默认为字符串的长度
step:指的是从start索引处的字符开始,每step个距离获取一个字符,直至 end索引处的字符,step默认值为1,当省略该值时,end后的冒号也可省略
>>>name = 'youchanwill'
>>>print(name[:: 3]) #每隔3个字符取出一个字符
ycnl

大小写转换

title() 将字符串中每个单词的首字母转为大写,其他字母全部转为小写

str.title() #str表示要进行转换的字符串
lower() 将字符串中的所有大写字母转换为小写字母

str.lower() #str表示要进行转换的字符串
upper() 将字符串中的所有小写字母转换为大写字母

str.upper() #str表示要进行转换的字符串

*以上方都仅限于将转换后的新字符串返回,不会修改原字符串

删除指定字符

删除字符串左右两边的空格特殊字符

strip() 用于删除字符串左右两边的空格和特殊字符

str.strip([chars]) 
str 表示原字符串,[chars] 用来指定要删除的字符,可以同时指定多个
如果不手动指定,则默认会删除空格以及制表符、回车符、换行符等特殊字符
lstrip() 用于删除字符串左侧的空格和特殊字符

str.lstrip([chars])
同strip()语法格式中的 str 和 chars 
rstrip() 用于删除字符串右侧的空格和特殊字符

str.rstrip([chars])
同strip()语法格式中的 str 和 chars 

*以上方法只是返回字符串指定字符被删除之后的副本,并不会改变字符串本身

分割和连接

split() 将字符串按指定分割符分割成多个短语

>>>name = 'you chan will'
>>>print(name.split()) #使用空白对字符串进行分割 
>>>print(name.split(None,1)) #使用空白对字符串进行分割,只分割前1个单词
['you', 'chan', 'will']
['you', 'chan will']
join() 将多个短语连接成字符串

>>>name1 = name.split()
>>>print('/'.join(name1)) # 使用'/'为分割符,连接成字符串
you/chan/will

你可能感兴趣的:(Python,Note,python,字符串)