Python学习笔记 (2.2)Python中的字符编码问题及标准数据类型之String(字符串)

简介: Python3中的String类型   首先,Python中没有字符类型,只有字符串类型。单个字符按照长度为1的字符串处理,这对于曾是OIER的我来说有点不适应啊。   字符串的表示方法     最常用的就是用一对双引号或一对单引号把一串字符括起来,像这样 'Hello world!' 或 "Hello world!" 。

Python3中的String类型

  首先,Python中没有字符类型,只有字符串类型。单个字符按照长度为1的字符串处理,这对于曾是OIER的我来说有点不适应啊。

  字符串的表示方法

    最常用的就是用一对双引号或一对单引号把一串字符括起来,像这样 'Hello world!' 或 "Hello world!" 。这两种表示方法可以说完全一样,没啥区别。这两种完全一样的东西存在的目的貌似只有一个,如果字符串中含有一个单引号,就要用双引号括起来,避免单引号匹配不起来,像这样 "I'm fine." 而不是这样 'I'm fine.' ,可以看到,第二种情况下,解释器就无法正确识别我们想要的字符串。再加一个相似的例子: '"Why," he said.' 和 ""Why," he said." 

字符编码

  参考资料:字符串和编码-廖雪峰的官方网站

  众所周知,计算机要处理字符,是通过字符编码。美国人发明了计算机,然后制定了由一个字节表示一个字符的ASCII编码,只有英文字母、数字、标点和一些控制字符,总共127个。

  但是这对其他语言来说就很不友好,因为放不下自己语言的字啊。于是各国都制定了自己的编码标准,比如中国的GB2312(国标2312)、GBK(国标扩),日本的Shift_JIS,等等。各国标准不同,就会出现冲突(乱码)。

  于是就产生了国际通用的编码标准Unicode(点我看Unicode),发展到如今,大多数由两个字节表示一个字,也有要4个字节的。它包括了全世界差不多所有字符。至于原来就在ASCII中的字符,在编码前面补零就好。

  但由于“补零”的存在,如果大部分是英文,Unicode储存时要耗费差不多两倍空间,于是储存时由Unicode转换为可变长编码的UTF-8以节约空间(1~6个字节表示一个字,中文大多是3字节),再次打开时,再转换回Unicode(Windows XP的记事本是这样的,win7记事本保存时就可以自己选编码方式了),网页也有这类似的应用。

  总结一下:计算机要处理非英文的字符,就要使用其他字符编码,如要处理中文,就要使用GB2312(只支持中文、英文)或Unicode、UTF-8(支持所有语言)。

  Ps:GBK和UTF-8并不兼容,于是在我刚开始折腾Ubuntu16.04时,发现在里面预装的rhythmbox中,我的音乐标题全是乱码,百度一下,在Ubuntu下处理好了,等重启回到win7时,win7又显示乱码了,解决方案:在Ubuntu下使用网易云音乐。还有当年去福建长乐一中集训,由于编码方式不兼容,我Ubuntu的文件用ftp传到他们那里,文件名只会显示乱码,导致我第一天没有成绩,解决方案:用Windows或Ubuntu下的ftp软件

Python3中的String(字符串)类型编码方式及其应用

  python3中,字符串类型默认使用Unicode,直接可以处理中文了,不像Python2,默认ASCII,要处理中文还要手动UTF-8。如果要更改编码方式,比如希望使用GBK,那么要加一行注释( 叫做编码声明 ) # -*- coding: gbk -*- 或 #coding=gbk (等号前后不能有空格),要放在第一行,如果第一行已经有了解析路径( #!/usr/bin/python3 ),那编码声明就要放在第二行。关于编码声明更详细的官方解释。再次强调,Unicode/UTF-8不与GBK兼容浣犲ソ锛屼笘鐣岋紒

目录
相关文章
|
1月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
233 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
139 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
150 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
1月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
54 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
1月前
|
自然语言处理 Java 数据处理
【速收藏】python字符串操作,你会几个?
【速收藏】python字符串操作,你会几个?
57 7
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
64 1
|
1月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
86 1
|
1月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
42 0
【免费分享编程笔记】Python学习笔记(二)
|
1月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
64 0
|
1月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
32 0

热门文章

最新文章