Python基础+刷廖雪峰教程笔记(一)——字符串、列表元组集合、函数

由于在深度学习的路上,发现自己两年前学习的python有些遗忘,在面向对象这一块尤其不熟悉,故刷一遍廖雪峰老师的官方教程,梳理一下遗漏的知识点。

参考网址:https://www.liaoxuefeng.com/wiki/1016959663602400

1.默认字符不转义

如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r’‘表示’'内部的字符串默认不转义。

demo1:

print('\\\t\\')
print(r'\\\t\\')#Python允许用r''表示''内部的字符串默认不转义

out1:

\	\
\\\t\\

2.除了\n的换行

demo2:

print('''line1
line2
line3''')

out2:

line1
line2
line3

3.字符编码问题

在这里插入代码片

ord()函数获取字符的整数表示;
chr()函数把编码转换为对应的字符。

demo3:

print(ord('A'))
print(ord('邓'))
print(chr(66))#不用加引号
print(chr(20216))
print('\u4e2d\u6587')

out3:

65
37011
B
仸
中文

由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

Python对bytes类型的数据用带b前缀的单引号或双引号表示。

demo4:

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes。含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法。

demo5:

>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
#如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'

4.len()函数

len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数。

demo6:

a = len(b'ABC')
print(a)

b = len(b'\xe4\xb8\xad\xe6\x96\x87')
print(b)

c = len('中文'.encode('utf-8'))#转为byte
print(c)

out6:

3
6
6

1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。

5.字符串的格式化

在这里插入图片描述
demo7:

print('Hi, I am your %s' % 'father')# %s永远起作用,可以把任何数据类型转换为字符串
print('Hi, I am %d years old' % 22)#整数不用加引号
print('I have %d %s' % (5, 'apple'))#多个变量
print('%.2f' % 3.1415926) #格式化输出
print( 'growth rate: %d %%' % 7)#%是一个普通字符则需要转义,用%%来表示一个%

out7:

Hi, I am your father
Hi, I am 22 years old
I have 5 apple
3.14
growth rate: 7 %

f-string的方法:

使用以f开头的字符串,称之为f-string,它和普通字符串不同之处在于,字符串如果包含{xxx},就会以对应的变量替换.

demo8:

#python 3.6以上才支持这种方法
r = 2.5
s = 3.14 * r ** 2
print(
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值