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 相关文章推荐
pycharm 使用心得(三)Hello world!
Jun 05 Python
Python实现批量将word转html并将html内容发布至网站的方法
Jul 14 Python
Python中subprocess的简单使用示例
Jul 28 Python
简单实现python爬虫功能
Dec 31 Python
Python学习小技巧之列表项的排序
May 20 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
Jan 30 Python
Python生成指定数量的优惠码实操内容
Jun 18 Python
python3 使用traceback定位异常实例
Mar 09 Python
python导入库的具体方法
Jun 18 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
Python: glob匹配文件的操作
Dec 11 Python
python 实现有道翻译功能
Feb 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二分法查找数组是否包含某一元素
2013/05/23 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
小谈php正则提取图片地址
2014/03/27 PHP
php生成数字字母的验证码图片
2015/07/14 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
js实现可折叠展开的手风琴菜单效果
2015/09/07 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
Three.js快速入门教程
2016/09/09 Javascript
Angular的$http与$location
2016/12/26 Javascript
js实现4个方向滚动的球
2017/03/06 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
python字符串string的内置方法实例详解
2018/05/14 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Python any()函数的使用方法
2019/10/28 Python
python实现图片上添加图片
2019/11/26 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
Python datetime模块使用方法小结
2020/06/18 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
产品设计开发计划书
2014/05/07 职场文书
工地质量标语
2014/06/12 职场文书
作风大整顿心得体会
2014/09/10 职场文书
房产公证书
2015/01/23 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL