AI教程网 - 未来以来,拥抱AI;新手入门,从AI教程网开始......

python基础-字符串和编码

Python字符串 AI君 53℃

python基础-字符串和编码

久闻人生苦短我学python,python的被应用到很多领域,最近下定决心好好开始学Python,故此写下笔记记录一下自己的学习过程,也便于日后查漏补缺


字符串及编码

常用的三种编码

  • ASCLL编码 :1个字节 (存在内存中的都是ASCLL编码,无法显示中文字符)
  • Unicode编码: 两个字节 (全都是两个字符)
  • UTF-8: 1-6个字节 英文字符都是用1个字节 中文字符就会有好几个字节 (如果文件英文字符比较多 这个编码比较好 节省空间)

Python中是以Unicode编码的

Python中获取字符的整数表示ord()chr()可以把编码转换成字符

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

Python中对bytes类型的数据用b'ABC'b前缀表示 ,encode()方法可以指定编码格式

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii') //中文不能指定ASCll编码,因为中文超过了ASCLL的编码范围
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)

编码之后可以用decode()方法解码,如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节

>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'

计算字符串长度用len() ,如果需要计算字节长度,可以线转成bytes形式

>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6

通常在py文件开头加上,告诉解释器按照UTF-8进行编码

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

#!/usr/bin/env python3  
# -*- coding: utf-8 -*-

格式化

%占位符

Python中用%来插入字符串的占位符,多个占位符后面参数要用括号括起来,常用的占位符有

  • %d 整数
    • 可以写成2d%,02d% 其中2表示替换的位置在第几位 写了0表示要补0 用来做编号的类似 01 02 03
  • %s 字符串
    • 字符串总是生效,会将其他类型当成字符串
  • %f 浮点型
    • 浮点型可以写成 .2f表示约几位小数
  • %x 十六进制
>>> print('hellow%010dworld'% 1 )
hellow0000000001world

>>> print('hellow%.3fworld'% 1.00000001 )
hellow1.000world
>>>

>>> print('hellow%sfworld%s'% (True,True))
hellowTruefworldTrue


format()

format()是另一种格式化字符串的方法,用{0}作为占位符,format写起来比%麻烦但是好处在于可以随意调换位置 ,且也没有类型的限制

>>> 'hello {2:.2f} {0} {1} world '.format(' Coding Farmer ','occupied',3.1415926)
'hello 3.14  Coding Farmer  occupied world '

作者:何其涛
原文链接:https://blog.csdn.net/deng1456694385/article/details/85140800

转载请注明:www.ainoob.cn » python基础-字符串和编码

喜欢 (0)or分享 (0)