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写的Socks5协议代理服务器
Aug 06 Python
在Django的模型中添加自定义方法的示例
Jul 21 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
对python产生随机的二维数组实例详解
Dec 13 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
在服务器上安装python3.8.2环境的教程详解
Apr 26 Python
基于Keras的格式化输出Loss实现方式
Jun 17 Python
python 8种必备的gui库
Aug 27 Python
Python max函数中key的用法及原理解析
Jun 26 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作的文本留言本的例子(五)
2006/10/09 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
领导调研接待方案
2014/02/27 职场文书
2015元旦节寄语
2014/12/08 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
祝寿主持词
2015/07/02 职场文书
详解MySQL连接挂死的原因
2021/05/18 MySQL
OpenCV实现反阈值二值化
2021/11/17 Java/Android