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中的readline()方法的使用
May 24 Python
python检查指定文件是否存在的方法
Jul 06 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
Python3安装Pillow与PIL的方法
Apr 03 Python
Python简单处理坐标排序问题示例
Jul 11 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
Python Opencv轮廓常用操作代码实例解析
Sep 01 Python
python使用matplotlib绘制折线图的示例代码
Sep 22 Python
Flask处理Web表单的实现方法
Jan 31 Python
Python读取文件夹下的所有文件实例代码
Apr 02 Python
python脚本框架webpy模板控制结构
Nov 20 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 实现文件压缩解压操作的方法
2019/06/14 PHP
Span元素的width属性无效果原因及解决方案
2010/01/15 Javascript
form表单中去掉默认的enter键提交并绑定js方法实现代码
2013/04/01 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
解决vue-router中的query动态传参问题
2018/03/20 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
[01:07:22]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG加赛
2014/05/26 DOTA
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
python编写计算器功能
2019/10/25 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
公司授权委托书格式范文
2014/10/02 职场文书
单位工作证明书格式
2014/10/04 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
党委工作总结2015
2015/04/27 职场文书
宾馆客房管理制度
2015/08/06 职场文书
python编写函数注意事项总结
2021/03/29 Python
python3实现常见的排序算法(示例代码)
2021/07/04 Python