python使用str & repr转换字符串


Posted in Python onOctober 13, 2016

可能比较 low 还是记录一下:

str 和 repr的使用过程

  1. str 是一个类型 (int, long 类似), 同样她也可以作为一个工厂方法 实例一个 string
  2. repr 是python 内置的函数, 用于保留一个 打印值在python 代码片段里的真实状态

好,以上全是废话

>>> a = 1
>>> a + ""
---------------------------------------------------------------------------
TypeError
Traceback (most recent call last)
<ipython-input-5-ebf3ab7f3a34> in <module>()
----> 1 a + ""

TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> a = 1
>>> repr(a) + ""

可以看到, 我们可以通过使用 str 和 repr 来转换字符串

但是,str 只能提供一个 元string来做转换, 不可以是一个变量(她不具备执行变量的能力)

repr 是一个函数, 所以实际上是传参, 可以是变量和string

好多人都知道str()能把123数字转成字符串,python里的str()甚至还能把列表、字典等对象转成字符串。这都好理解,可是一旦把str()和repr()放在一起,大家就全都不淡定了-_-!

来看一段代码,仍是在IDLE里交互:

>>> str('hello')
  'hello'
  >>> repr('hello')
  "'hello'"

  >>> str('你好')
  '\xc4\xe3\xba\xc3'
  >>> repr('你好')
  "'\\xc4\\xe3\\xba\\xc3'"

先看前两句:英文的'hello'在str()后仍是'hello',可是在repr()后就变成了"'hello'"。这就说明,str()返回的就是字符串本身,而repr()虽然返回的也是字符串,但它是一个标准字符串,官方解释比较绕,我来解释下吧。repr是representation及描述的意思,不是对人的描述,而是对python机器的描述,也就是它会将某物返回一个它在python中的描述。说人话:repr(obj)告诉我们obj这个变量在背地里是什么样子,在背地里是怎么被python处理被python"玩弄"的。

在python里,我们总会被眼睛欺骗。编辑器里显示的东西,并不总是它原本的面貌。python为了方便,总是表面上一套,背地里又一套。

再来理解后两句:中文的'你好'在str()后变成了编码'\xc4\xe3\xba\xc3',在repr()后变成了"'\xc4\xe3\xba\xc3'"。`都加上了转移符变成\,相当于把字符串中的内容都“标准化”了。至于'变成"`只是为了说明repr()返回的是一个经过处理的新字符串。

print后的str()和repr()

来看代码:

>>> print str('你好')
  你好
  >>> print repr('你好')
  '\xc4\xe3\xba\xc3'

之前str('你好')显示的是'\xc4\xe3\xba\xc3',而一经过print,就变成了正确的'你好'。上面说过了,命令行里直接输入一个变量,显示的是它在python后台存储的数据;而用print出来的东西,会显出出尽量友好、让人能看懂的东西。
理解了这个,对print这两个结果的不同,也就全然理解了。然后也就放弃print作为考据的心了。

Python 相关文章推荐
Python使用urllib2获取网络资源实例讲解
Dec 02 Python
Python打印scrapy蜘蛛抓取树结构的方法
Apr 08 Python
python获得文件创建时间和修改时间的方法
Jun 30 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
Nov 24 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
python使用ctypes调用扩展模块的实例方法
Jan 28 Python
python 成功引入包但无法正常调用的解决
Mar 09 Python
python 检测nginx服务邮件报警的脚本
Dec 31 Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 #Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 #Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 #Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 #Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 #Python
深入浅析ImageMagick命令执行漏洞
Oct 11 #Python
Zabbix实现微信报警功能
Oct 09 #Python
You might like
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
PHP过滤★等特殊符号的正则
2014/01/27 PHP
为你总结一些php系统类函数
2015/10/21 PHP
JavaScript中的Array对象使用说明
2011/01/17 Javascript
checkbox使用示例
2013/08/23 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
js实现select选择框效果及美化
2016/08/19 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
Python MySQLdb Linux下安装笔记
2015/05/09 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
python中的数据结构比较
2019/05/13 Python
python解析多层json操作示例
2019/12/30 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
python输入中文的实例方法
2020/09/14 Python
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
家长对小学生的评语
2014/01/28 职场文书
房地产开发项目建议书
2014/05/16 职场文书
本科毕业生自荐信
2014/06/02 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android