专栏首页python3字符串与编码

字符串与编码

在最新的Python 3版本中,字符串是以Unicode编码的,即Python的字符串支持多语言

编码和解码   字符串在内存中以Unicode表示,在操作字符串时,经常需要str和bytes互相转换   字符串是可以直接在内存上进行处理的,但如果要将其传输到网络或磁盘上,需要将其编码,反过来则需要解码,因为str是不可以直接存储在磁盘上或在网络上传输的   如果将字符串从内存传输到网络或保存到磁盘,则要把str转换为以字节为单位的bytes,称为编码   如果要从网络或磁盘上获取字符串,则要从网络上或者磁盘上读取字节流,并把bytes转换为str,称为解码   为避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换,关于编码,请参照字符编码

使用示例:

单个字符的编码

print(ord('A')) #输出:65,获取字符的整数表示
print(chr(66)) #输出:B,把编码转换为对应的字符

十六进制表示

print('中文') #输出:'中文',
print('\u4e2d\u6587') #输出:'中文','\u4e2d\u6587'和'中文'完全对等,如果知道字符的整数编码,还可以用十六进制这么写str

bytes类型的数据表示

x = b'ABC' #Python对bytes类型的数据用带b前缀的单引号或双引号表示,'ABC'和b'ABC'在显示上完全一样,但bytes的每个字符都只占用一个字节

编码

print('ABC'.encode('ascii')) #输出:b'ABC',以Unicode表示的str通过encode()方法可以编码为指定的bytes
print('中文'.encode('utf-8')) #输出:b'\xe4\xb8\xad\xe6\x96\x87',
print('中文'.encode('ascii')) #输出:报错,因为中文字符在ascii编码范围外,所以导致编码失败

解码

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

计算长度

#len(a)函数返回a的长度,如果a是字符串则返回字符数,如果a是字节表示则返回字节数
print(len('中文')) #输出:2,共2个字符
print(len('ABC')) #输出:3,共3个字符
print(len(b'ABC')) #输出:3,共是3个字节
print(len(b'\xe4\xb8\xad\xe6\x96\x87')) #输出:6,共是6个字节
print(len('中文'.encode('utf-8'))) #输出:6, 1个中文字符经过UTF-8编码后通常会占用3个字节,因此两个汉字的字节数是6

源码文件开头与编码

#!/usr/bin/env python3       告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释
# -*- coding: utf-8 -*-      告诉Python解释器,按照UTF-8编码读取源代码,否则在源代码中写的中文输出可能会有乱码

#注意:告诉编译器使用UTF-8编码的同时,.py文件也要保存为UTF-8 without BOM编码,两者统一了,才可确保文件中的中文正常显示

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 规范-编码

    用户2398817
  • Python练习3:判断学生成绩等级

    #判断学生成绩等级,等级分为A~E,其中90分以上为A,80~89为B,70~79为C,60~69为D,60分一下为E

    用户2398817
  • Python and or用法

    用户2398817
  • 一道SQL题的前世今生

    注:以下讨论核心在于解释原理,所涉及到的数据和表结构均为虚构。本文代码较多,如果看不清楚,可以在后台回复“sql”获取本文PDF版本。

    数据森麟
  • 备战秋招,leetcode刷起来

    很多事情并非很难,但是要长期坚持下来确实不容易,一直突破自己的舒适区,才能不断的进步成长;无论是我自己从一个内向的人,读大学后尝试着去参加各种活动,并拿了一些荣...

    AI算法与图像处理
  • python3之鸭子类型

    一句话:“当看到一只鸟走起来像鸭子,游泳起来像鸭子,叫起来也想鸭子,那么这只鸟就可以被称为鸭子。”,也就是我并不关心对象什么类型,到底是不是鸭子,只关心行为。

    用户2398817
  • 【Rust日报】2019-08-18 - Rust Image比Python Pillow更快吗?

    作者在研究一个科学应用,有时需要在非常大的图像上面进行操作,在作者目前的Pyhton工作版本中,对于大图像的处理很慢,最后作者得出测试Rust要快很多。

    MikeLoveRust
  • #算法基础#选择和插入排序

    算法是基础,小蓝同学准备些总结一系列算法分享给大家,这是第二篇《选择和插入排序》,非常赞!希望对大家有帮助,大家会喜欢! 系列文章: 由快速排序到分治思想 ...

    大数据和云计算技术
  • 强化学习在智能对话上的应用

    TEG数据平台部联合AiLab、Ai平台部,结合语音合成、语音识别、机器人问答、大数据能力等前沿性、高复用性的功能模块构建腾讯小知智能语音机器人产品,支持问答、...

    腾讯技术工程官方号
  • 强化学习在智能对话上的应用

    TEG数据平台部联合AiLab、Ai平台部,结合语音合成、语音识别、机器人问答、大数据能力等前沿性、高复用性的功能模块构建腾讯小知智能机器人产品,支持问答、业务...

    腾讯大数据

扫码关注云+社区

领取腾讯云代金券