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中使用logging模块打印log日志详解
Apr 05 Python
Python的Flask框架中的Jinja2模板引擎学习教程
Jun 30 Python
在Python中通过threading模块定义和调用线程的方法
Jul 12 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
python 实现任务管理清单案例
Apr 25 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
python使用建议技巧分享(三)
Aug 18 Python
Python通过getattr函数获取对象的属性值
Oct 16 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 Python
python基础学习之递归函数知识总结
May 26 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
php 发送带附件邮件示例
2014/01/23 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
2009/11/24 Javascript
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
python pygame模块编写飞机大战
2018/11/20 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
Python字符串的一些操作方法总结
2019/06/10 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
机关会计岗位职责
2014/04/08 职场文书
教师产假请假条范文
2014/04/10 职场文书
七一讲话心得体会
2014/09/05 职场文书
法人委托书的范本格式
2014/09/11 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
雨花台导游词
2015/02/06 职场文书
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫
Redis特殊数据类型bitmap位图
2022/06/01 Redis