iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python解析器的解析过程是怎样的
  • 446
分享到

Python解析器的解析过程是怎样的

2023-06-17 16:06:05 446人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

今天就跟大家聊聊有关python解析器的解析过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先先让大家看一下Python解析器的全流程:我们先用编辑器编写好源代码,保存成

今天就跟大家聊聊有关python解析器的解析过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

首先先让大家看一下Python解析器的全流程:我们先用编辑器编写好源代码,保存成文件。如果源代码中有编码声明而且用的编辑器支持该语法,那么该文件就以相应的编码方式保存在磁盘中。

注意: 编码声明和源文件的编码不一定是一致的,你完全可以在编码声明中声明编码为UTF-8,但是用GB2312来保存源文件。当然,我们不可能自寻烦恼,故意写错,而且好的IDE也能强制保证两者的一致性,但是,如果我们用记事本或者EditPlus等编辑器来编写代码的话,一不小心就会出现这种问题的。

得到一个.py文件后,我们就可以运行它了,这是,我们就把代码交给Python解析器来完成解析工作。解析器读入文件时,先解析文件中的编码声明,我们假设文件的编码为gb2312,那么先将文件中的内容由gb2312转换成Unicode,然后再把这些Unicode转换为UTF-8格式的字节串。

(注:这里仅指源代码即脚本代码的纯代码转换) 完成这一步骤后,解析器把这些UTF-8字节串分段,解析。如果遇到使用Unicode字符串(注:比如遇到 u'中国a我爱你') ,那么就使用相应的UTF-8字节串创建Unicode字符串。

如果程序中使用的是一般的字符串,那么解析器先将UTF-8字节串通过Unicode转换成相应编码(这里就是gb2312编码)的字节串(注:普通的,非unicode的,即ascii ),并用其创建一般的字符串对象。也就是说,Unicode字符串跟一般字符串在内存中的存放格式是不一样的,前者使用UTF-8的格式,后者使用GB2312格式。

好了,内存中的字符串存放格式我们知道了,下面我们要了解print的工作方式。print其实只是负责把内存中相应的字节串交给操作系统,让操作系统相应的程序(譬如cmd窗口)进行显示。这里有两种情况:

若字符串是一般的字符串,那么print只需把内存中相应的字节串推送给操作系统。如例子中的code 1。
2、如果字符串是Unicode字符串,那么print在推送之前先进行相应的encode:我们可以显示使用Unicode的encode方法使用合适的编码方式来编码(例子中code 2)

否则Python使用默认的编码方式进行编码,也就是ASCII(例子中的code 3)。当然ASCII是不可能正确编码中文的,因此Python报错。至此,上面的三个问题我们已经可以解析***和第三个了。至于第二个问题,因为Python中有两种字符串,一般字符串和Unicode字符串,两者都有各自的字符处理方法。

对于前者,方法是以字节的方式进行的,而且在GB2312中,每个汉字占用两个字节,因此得到的结果是5;对于后者,也就是 Unicode字符串,所有字符都是统一看待的,因此得到。

虽然上面只提到了控制台程序的中文问题,但是文件读写以及网络传输中出现的中文问题在原理上都是类似的。Unicode的出现可以很大程度上解决软件的国际化问题,同时Python为Unicode提供了极为良好的支持,因此,我建议大家在编写Python的程序时,都统一使用Unicode方式。

保存文件时使用UTF-8的编码方式。How to Use UTF-8 with Python有详细的描述,大家可以参考一下。Python中能导致出现中文问题的地方还很多,譬如文件的读写,网络数据的传输等,希望大家能多多交流,共同解决这些问题。

回顾一下使用Python解析器的流程:首先,先用编辑器编写好源代码,保存成文件。如果源代码中有编码声明而且用的编辑器支持该语法,那么该文件就以相应的编码方式保存在磁盘中。注意:编码声明和源文件的编码不一定是一致的,完全可以在编码声明中声明编码为UTF-8,但是用GB2312来保存源文件。

当然,这是自寻烦恼,而且好的IDE也应该保证两者的一致性。但是,如果。用记事本或者EditPlus等编辑器来编写代码的话,可能就会出现这种问题的。得到一个.py文件后,可以运行它。这是把代码交给Python解析器来完成解析工作。解析器读入文件时,先解析文件中的编码声明,假设文件的编码为gb2312。

那么先将文件中的内容由gb2312转换成Unicode,然后再把这些Unicode转换为UTF-8格式的字节串。完成这一步骤后,解析器把这些UTF-8字节串分段,解析。如果遇到使用Unicode字符串,那么就使用相应的UTF-8字节串创建Unicode字符串,如果程序中使用的是一般的字符串。

那么解析器先将UTF-8字节串通过Unicode转换成相应编码(这里就是gb2312编码)的字节串,并用其创建一般的字符串对象。也就是说,Unicode字符串跟一般字符串在内存中的存放格式是不一样的,前者使用UTF-8的格式,后者使用GB2312格式。

看完上述内容,你们对Python解析器的解析过程是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: Python解析器的解析过程是怎样的

本文链接: https://www.lsjlt.com/news/290780.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python解析器的解析过程是怎样的
    今天就跟大家聊聊有关Python解析器的解析过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先先让大家看一下Python解析器的全流程:我们先用编辑器编写好源代码,保存成...
    99+
    2023-06-17
  • DNS服务器解析过程是怎样的
    本文小编为大家详细介绍“DNS服务器解析过程是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“DNS服务器解析过程是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。DNS: Domain Name Sy...
    99+
    2023-06-27
  • Python数据分析过程是怎样的
    这篇文章主要介绍“Python数据分析过程是怎样的”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python数据分析过程是怎样的”文章能帮助大家解决问题。一、需求介绍该需求主要是分析某一种数据的历史...
    99+
    2023-06-26
  • PyYAML中Python的YAML解析器是怎样的
    PyYAML中Python的YAML解析器是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言PyYAML是一个Python的YAML解析器。YAML ="...
    99+
    2023-06-02
  • 怎样全面解析安装Nginx的过程
    本篇文章为大家展示了怎样全面解析安装Nginx的过程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。安装Nginx的时候有需要小技巧和小窍门。掌握好这些就能更好的使用...
    99+
    2024-04-02
  • 浏览器缓存,DNS,CDN及域名解析的过程是怎样的
    这篇文章主要介绍“浏览器缓存,DNS,CDN及域名解析的过程是怎样的”,在日常操作中,相信很多人在浏览器缓存,DNS,CDN及域名解析的过程是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”浏览器缓存,D...
    99+
    2023-06-29
  • JavaScript json解析是怎样的
    今天就跟大家聊聊有关JavaScript json解析是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JSON的一个常见用途是交换数据到从一个...
    99+
    2024-04-02
  • 剖析Python源代码编制过程是怎么样的
    剖析Python源代码编制过程是怎么样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python语言中提供的re模块能支持正则表达式,还提供SGML,XML分析模块,大多数的...
    99+
    2023-06-17
  • 怎样浅析Python开发过程
    这篇文章给大家介绍怎样浅析Python开发过程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Pyth...
    99+
    2023-06-17
  • 怎样解析不固定参数的存储过程
    小编给大家分享一下怎样解析不固定参数的存储过程,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  如何解析不固定参数的存储过程  ...
    99+
    2024-04-02
  • Python对XML的解析式怎样的
    这篇文章主要讲解了“Python对XML的解析式怎样的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python对XML的解析式怎样的”吧!什么是 XML?XML 指可扩展标记语言(eXte...
    99+
    2023-06-02
  • expdp ORA-31626: job does not exist的解决及分析过程是怎样的
    本篇文章给大家分享的是有关expdp ORA-31626: job does not exist的解决及分析过程是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说...
    99+
    2024-04-02
  • python编译pyc文件的过程解析
    什么是pyc文件 pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,...
    99+
    2024-04-02
  • SQL注入全过程的深入分析是怎样的
    这篇文章将为大家详细讲解有关SQL注入全过程的深入分析是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。分析了SQL注入全过程,具体如下:初步注入--绕...
    99+
    2024-04-02
  • Python解析JSON对象的全过程记录
    前言 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象。 json处理模块的主要任务,是将一个JSON对象,转换成Python数据类型数据进行处理,或者...
    99+
    2024-04-02
  • java中HashMap解析put的过程是什么
    这篇文章主要介绍“java中HashMap解析put的过程是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java中HashMap解析put的过程是什么”文章能帮助大家解决问题。HashMap解...
    99+
    2023-07-05
  • Python中关于数据采集和解析是怎样的
    本篇文章为大家展示了Python中关于数据采集和解析是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,下面我们给出一个爬虫开发相关技术...
    99+
    2023-06-02
  • 怎样解析javascript的闭包
    今天就跟大家聊聊有关怎样解析javascript的闭包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是闭包:闭包是一个存在内部函数的引用关系。该引用指向的是外部函数的局部变量对象...
    99+
    2023-06-29
  • Python爬虫过程是怎样的
    本文小编为大家详细介绍“Python爬虫过程是怎样的”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python爬虫过程是怎样的”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。网络爬虫从一个或若干初始网页的URL开...
    99+
    2023-06-17
  • ActiveMQ问题分析和解决是怎样的
    ActiveMQ问题分析和解决是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1)KahaDb和AMQ Message Store两种持久方式如何选择?官方:From...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作