专栏首页看那个码农编码 | Python竟然有隐藏功能,只有极少人知道!

编码 | Python竟然有隐藏功能,只有极少人知道!

本篇推文共计800个字,阅读时间约1分钟。

Python2.x版本

字符编码有时让人很头疼

遇到问题,网上方法可以解决错误。

但对原理还是一知半解

例如

用 Python 输出 "Hello, World!"

#!/usr/bin/python
print "Hello, World!";

英文没有问题

Hello, World!

但是如果你输出中文字符

"你好,世界"

#!/usr/bin/python

print "你好,世界!";

就有可能会碰到中文编码问题

File "hello.py", line 2
SyntaxError: Non-ASCII character '\xe4' in file test.py on line 2, but no encoding
declared; see http://www.python.org/peps/pep-0263.html for details

提醒报错,无法输出中文。

产生这样结果的原因是Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。

解决的方法很简单只需要在文件的开头加入

# -*- coding: UTF-8 -*-

或者

#coding=utf-8

(注意:#coding=utf-8 的 = 号两边不要空格。)

在文件的开头加入上述的代码之后再次尝试输出

“你好,世界!”

#!/usr/bin/python
# -*- coding: UTF-8 -*-

print "你好,世界";

输出的结果就会变成如下所示的样子

你好,世界!

所以如果大家在学习过程中

代码中包含中文,就需要在头部指定编码

注意Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。

说到这里需要给各位读者科普一下

在python 2或者3 ,字符串编码只有两类

(1)通用的Unicode编码 (2)将Unicode转化为某种类型的编码

如UTF-8,GBK

计算机只处理数字,因此处理文本时,必须转换成数字才行。

8位(bit)=1字节(byte)=256种不同状态=从000000到111111

1GB=1024M=1024(1024kb)

=1024(1024(1024b))

ASCII编码 是对应英文字符与二进制数字之间的关系;ASCII一共规定了128种,如大写字母A是65,即01000001;可见一字母一字节;

GB2312编码 简体中文常见的编码,两个字节代表一个中文汉字 ,理论上256*256个编码,即可表示65536种中文字;

各国编码不同,为了各国能扩平台进行文本的转换与处理,Unicode就被作为统一码或者单一码。

Unicode编码通常是两个字节,unicode与ASCII编码的区别,在于unicode在ASCII编码前加了一个0,即字母A的ASCII编码为01000001,unicode编码即为0000000001000001;但英文字母其实只用一个字节就够了,unicode编码写英文时多了一个字节,浪费存储空间。

因而unicode开发了通用转换格式

(Unicode Transformation Format(UTF))

常见的有utf-8或者utf-16;

以上就是本期全部内容

往期回顾

热点贴 | 在校研究生补助金,需缴纳个税,合适吗?

Python基础20讲 | 深扒码农那些不为人知的事

愿看完本文的你

实现所有的新年愿望

心想事成

(本公众号已开通留言功能,欢迎各位读者留言)

☆ END ☆

图片|网络

编辑|一个码农

你与世界

只差一个

公众号

喜欢本推文的话麻烦你点个“在看”或“转载”

本文分享自微信公众号 - 看那个码农(gh_c2cbbe45c86d)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-08

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python入门基础教程-函数

    即:print个函数中有若干个具有默认值的参数,即便我们在调用这个函数的时候,就算没有指定它们,它们也存在于此。

    知秋小梦
  • python制作电子书

    爱撒谎的男孩
  • PCA in Python

    利用sklearn库的PCA函数对数据集做PCA,进行PCA之前,对数据集做scale处理。

    陆勤_数据人网
  • Python入门基础教程-模块

    我们将一些可以重复使用的代码保存在一个单独的py文件中,这个可以被其他代码调用的py文件叫做模块module

    知秋小梦
  • Python入门基础教程-文件

    大多数情况下程序中的数据会来自于外部,包括数据库导出的规整化数据、爬虫获取的大量不规则数据、以及其他各企业内部数据。总之,要想对数据进行处理、你得先学会数据的读...

    知秋小梦
  • python操作MongoDB

    爱撒谎的男孩
  • Python Scrapy 爬虫框架 | 5、利用 pipelines 和 settings 将爬取数据存储到 MongoDB

    前文中讲到了将爬取的数据导出到文件中,接下来就在前文的代码基础之上,将数据导出到 MongoDB中。

    TeamsSix
  • Python入门基础教程-流程控制

    在进行程序设计的时候,我们会经常进行逻辑判断,根据不同的结果做不同的事,或者重复做某件事,我们对类似这样的工作称为流程控制

    知秋小梦
  • python发送邮件

    爱撒谎的男孩
  • RSSAnt 让 RSS 更好用,轻松订阅你喜欢的博客和资讯

    <span class="pl-c"># 关闭DEBUG请置0</span> RSSANT_DEBUG=1 <span class="pl-c"># 请随机生...

    huginn 中文网

扫码关注云+社区

领取腾讯云代金券