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兼容浣犲ソ锛屼笘鐣岋紒

目录
相关文章
|
3月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
345 100
|
3月前
|
开发者 Python
Python中的f-string:高效字符串格式化的利器
Python中的f-string:高效字符串格式化的利器
469 99
|
3月前
|
Python
Python中的f-string:更优雅的字符串格式化
Python中的f-string:更优雅的字符串格式化
|
3月前
|
开发者 Python
Python f-strings:更优雅的字符串格式化技巧
Python f-strings:更优雅的字符串格式化技巧
|
2月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
183 4
|
2月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
317 5
|
6月前
|
存储 编译器 C语言
关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
177 0
|
9月前
|
缓存 安全 Java
《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
267 11
|
9月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
292 9
|
9月前
|
存储 JavaScript Java
课时44:String类对象两种实例化方式比较
本次课程的主要讨论了两种处理模式在Java程序中的应用,直接赋值和构造方法实例化。此外,还讨论了字符串池的概念,指出在Java程序的底层,DOM提供了专门的字符串池,用于存储和查找字符串。 1.直接赋值的对象化模式 2.字符串池的概念 3.构造方法实例化
189 1

推荐镜像

更多