python目前有两个分支:2.7.3和3.3.0,基本用法大同小异,但在个别细节上还是有出入的,具体看python.org网站。 个人感觉的差异有: 1、py3默认就是unicode,终于在写程序时可以不用再考虑中文支持的问题。 py3中字符串不再分str和unicode两种类型,统统都是unicode类型。个人认为此点进步最大。 py2则是ascii,处理中文要考虑编码,罗哩罗嗦,麻烦的要命!
我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。
转载于:廖雪峰的官方网站-python教程 字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295。 由于计算机
最近发现很多小伙伴搞不清楚编码和解码,以及字符串前缀 f、r、u 、b 的区别和使用。那以下内容千万不要错过!
一、 了解一下编码的发展。 1、 计算机只能处理数字,如果需要处理文本,需要先将文本转换为数字。因为计算机是美国梆子发明的,所以他们发明了最早的编码--ASCII编码,也就是将他们的大小写字符数字和一些符号编码得到计算机中。比如A的编码是65。 2、 随着计算机在中国发展起来,拿ASCII去处理中文,显然是不够的,因为英文需要一个字节处理,而中文是需要两个字节。为了满足需求我们中国发明了自己的编码GB2312。将中文编进去。 3、 我们中国如此,世界上那么多语言岂不是每种语言都需要一种编码标准,如果一个文本中有多种语言,到时候产生的结果就是出现乱码。 4、 为顺应发展,比较叼的Unicode编码出生了,这个东西将所有的语言都统一到一套编码中。这样就不会再出现乱码的问题。虽然这个东西够强大,但是却有一个不能小觑的缺点。相比于ASCII编码要多出一倍的储存空间。例如:A ascii:65 二进制:01000001 unicode:00000000 01000001 5、 所以秉承着节约的原则,UTF-8应运而生,好处编码可变长。例如A的UTF-8:01000001,可以将unicode编码中的前面的零节约掉。 二、 在计算机 系统中通用编码的工作方式 1、 当我们编辑文档的时候,读取文档内容将UTF-8字符转换为unicode字符到内存中。因为这里需要显示,为了避免乱码,使用通用的Unicode编码。 2、 当编码编辑完成后,再将Unicode的编码转换为UTF-8保存到文件中。因为这里是需要存入磁盘中的,为节约储存空间,使用可变编码长度的UTF-8编码。 三、 python3字符编码 python的字符串类型是str,在内存中以Unicode表示。 1、 如果需要在网络上传输,或者保存到存储设备上,就需要将str变成以字节为单位的bytes。可以使用encode()方法。通过第一大点的了解,我们知道Unicode表示的str可以通过ASCII和utf-8编码转换。但是转换中文的时候,一定使用utf-8,因为含有中文的str无法用ASCII编码,超出了ASCII编码的范围。例如:
我们来说说 Python 中是如何存储字符的,先来看一个乱码的例子。新建一个 demo.py 文件,文件存储格式为utf-8文件中内容如下。
编码问题,一直是使用python2时的一块心病。几乎所有的控制台输入输出、IO操作和HTTP操作都会涉及如下的编码问题:
1. 字符编码 由于计算机只能处理数字,如果要处理文本就必须将文本转换为数字才能处理,最早设计的时候采用8b 表示一个字节,一个字节能够表示的最大整数是255,如果要表示更大的整数,就必须用多个字节。另外由于计算机是美国人发明的,所以计算机早期只有127个字符被编码到计算机了,也就是Ascii码,后来要处理中文中国就指定了GB2312 ,但是其他国家也有自己的语言 然后就有了不同的标准, 所以就有组织将所有的统一成 Unicode编码。 2. python字符串 在python 中字符串支持多语言,py
在计算机内存中统一使用Unicode编码,当保存到硬盘或者需要传输时,就转换到UTF-8编码。
python 2.x默认的字符编码是ASCII,默认的文件编码也是ASCII。
字符串编码在Python里边是经常会遇到的问题,特别是写文件以及网络传输的过程中,当调用某些函数的时候经常会遇到一些字符串编码提示错误,所以有必要弄清楚这些编码到底在搞什么鬼。
前言 曾几何时 Python 中文乱码的问题困扰了我很多很多年,每次出现中文乱码都要去网上搜索答案,虽然解决了当时遇到的问题但下次出现乱码的时候又会懵逼,究其原因还是知其然不知其所以然。现在有的小伙伴为了躲避中文乱码的问题甚至代码中不使用中文,注释和提示都用英文,我曾经也这样干过,但这并不是解决问题,而是逃避问题,今天我们一起彻底解决 Python 中文乱码的问题。
用print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world',用代码实现如下:
文本文件中存放的数据在用户读取时可以按照编码类型还原成字符形式,我们可以直接打开,如下:
字符串类型是对人类友好的符号,但计算机只认识一种符号,那就是二进制(binary)数,或者说是数字。 为了用计算机可以理解的数字描述人类使用的字符,我们需要一张数字与字符对应的表。我们都知道在计算机中 1 byte = 8bits,可以存储 0~255共256个值,也就是说 1byte最多可以表示 256 个字符,在最初的计算机世界中,256 足以容纳所有大小写英文字和阿拉伯数字 0~9以及一些常用的符号,于是就有了 ASCII 编码:
json是用来转换python object 和json format 的,字符编码有gb2312,gb18030/gbk,utf-8等。
在最新的Python 3版本中,字符串是以Unicode编码的,即Python的字符串支持多语言
比如一款游戏《大话西游》用的是gbk编码开发的。出口到欧美国家,是无法直接运行的。
python中的字符串一直是困扰小编的一大难题,相信大家伙也曾体验过被各种编码支配的恐惧吧。不过没关系,相信你读了这篇文章,一定会对python字符串豁然开朗! 代码链接:https://github.com/princewen/professional-python3 一、字符串类型 python3: python语言有两种不同的字符串,一个用于存储文本,一个用于存储原始字节。 文本字符串内部使用Unicode存储,字节字符串存储原始字节并显示ASCII。
我们在使用python处理中文字符串时总会遇到一些问题,特别是一些老项目需要用到python2,中文显示乱码,文件读写异常等问题时常发生。
python中的字符串一直是困扰小编的一大难题,相信大家伙也曾体验过被各种编码支配的恐惧吧。不过没关系,相信你读了这篇文章,一定会对python字符串豁然开朗! 代码链接:https://github.com/princewen/professional-python3 一、字符串类型 python3: """ python语言有两种不同的字符串,一个用于存储文本,一个用于存储原始字节 文本字符串内部使用Unicode存储,字节字符串存储原始字节并显示ASCII """ """ python3中,文本型
Python提供了一个raw_inpu,可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:
python2.x版本的字符编码有时让人很头疼,遇到问题,网上方法可以解决错误,但对原理还是一知半解,本文主要介绍 python 中字符串处理的原理,附带解决 json 文件输出时,显示中文而非 unicode 问题。首先简要介绍字符串编码的历史,其次,讲解 python 对于字符串的处理,及编码的检测与转换,最后,介绍 python 爬虫采取的 json 数据存入文件时中文输出的问题。 参考书籍:Python网络爬虫从入门到实践 by唐松
初学Python写爬虫程序,上手很快,但字符串的编码问题却一直困扰着我,我相信每一个学习爬虫的人都有过和我一样的困惑。一旦走上了编程之路,如果你不把编码问题搞清楚,那么它就像幽灵一般纠缠你整个职业生涯,所以,今天就谈谈Python的字符串编码。
Python初学者编码实践中经常遇到encode error,decode error。
字符串 在python3中已经全面支持中文。 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取
字符串 在python3中已经全面支持中文。 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行: #!/usr/bin/env python3# -*- coding: utf-8 -*- Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符: 📷 要计算str包含多少个字符,可以用len()函数: 在
在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言,例如:
1991年,Guido van Rossum发布了Python编程语言的第一个版本,自此,世界迎来了巨变。互联网的发展,要求支持不同的自然语言,这促使了Unicode的发展。Unicode定义了一个通
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
之前写程序时也出现过类似错误,每次解决了到第二次遇见又忘了具体方法,这次记录一下。
Python第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快
应用场景如下:从api下载数据,json解析,存入字典,定期保存。重启程序需要加载保存的文本。 问题1:json中都是unicode串,存到文本里都是些\u*** 解决:关闭ensure_ascii开关 json.dump(pub.listData,fp,ensure_ascii=False) 问题2:字典关键字用的数字,从文本load后变为unicode串 解决: 走了一点弯路,网上的解决方法,都是转换,把串转回utf-8,方法是 def byteify(input): if isinsta
字符编码是计算机编程中不可回避的问题,不管你用 Python2 还是 Python3,亦或是 C++, Java 等,我都觉得非常有必要厘清计算机中的字符编码概念。本文主要分以下几个部分介绍: 基本概念 常见字符编码简介 Python 的默认编码 Python2 中的字符类型 UnicodeEncodeError & UnicodeDecodeError 根源 基本概念 字符(Character) 在电脑和电信领域中,字符是一个信息单位,它是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字
在上一篇文章里我们讲了 xpath写法的问题还以爬取我的文章信息写了示例,但是在上一篇中我们只是爬取并打印了信息,并没有对信息进行保存。
在字符与字节之间的转换过程称为编解码,Python自带了超过100种编解码器,比如:
ASCII,ISO-8859-1,GB2312,GNBK,UTF-8,UTF-16等
Python用缩进来组织代码块,坚持4个空格的缩进;也可以在文本编辑器中设置Tab转换为4个空格。
你是否在编写Python代码时,老是遇到UnicodeDecodeError/UnicodeEncodeError错误,无从下手。或者是打印一串字符串,确是乱码,搞人心态。
📷 📷 编码(python版) 最近在学习python的过程中,被不同的编码搞得有点晕,于是看了前人的留下的文档,加上自己的理解,准备写下来,分享给正在为编码苦苦了挣扎的你。 编码的概念 编码就是将信息从一种格式转换成另一种格式,计算机只认识二进制,简单的理解,将我们眼睛看到的文字转换为计算机能够识别的二进制格式视为编码,而二进制以某种编码格式转换为我们能看的文字的过程可以看成是解码。既然计算机只能认识二进制0,1,那么我们用的字母、数字和文字等是怎样和他们对应的呢?那
###字符串的编码乱码问题由来已久,真的是令人头疼。这不是在做正则匹配中文时候,编码又一次成了拦路虎,在这儿记录两点。第一,字符串编码。第二,正则匹配中文。
在很久很久以前,美国人发明了计算机,计算机只能处理数字也就是把文字转换为8个bit也就是一个字节,8个bit最大能表示的数字为255,而[A-Z]、[a-z]、[0-9]再加上键盘上的一些符号正好255个,所以ASCII编码就成为了美国人的标准编码(用一个字节代表一个字母或者符号),正好也满足了美国人的需求。
最近在尝试 Python Web方面的开发尝试,框架使用的是Django,但是在读取数据库并页面展示的时候,出现了中文编码的问题。
https://blog.csdn.net/fgf00/article/details/52061971
最近在用python接受网络数据的时候,输出时总是遇到编码的问题,虽然都解决了,但深刻意识到自己其实对python的编码并没有清晰的认识,所以才会遇到这样的问题。今天就此总结一下,以免日后夜长梦多。
参考链接: Python-Json 2 : 使用json.load/loads读取JSON文件/字符串
关于python编码的基本常识 在python里面 “明文”是unicode类型 “密文”是其他的编码格式 如gbk utf-8 latin-1等等 编码: “明文”->”密文” .encode([目标编码格式]) 对象必须为unicode类型 解码: “密文”->”明文” .decode([源编码格式]) 对象为str类型 对于汉字 一共有三大类编码方式 以中文汉字”李”为例子 a. unicode类 机器码 \x67\x4e unicode(python表示) \u674e HTML E
领取专属 10元无门槛券
手把手带您无忧上云