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基础教程之获取本机ip数据包示例
Feb 10 Python
Django框架中render_to_response()函数的使用方法
Jul 16 Python
Python的re模块正则表达式操作
May 25 Python
详解python中的json和字典dict
Jun 22 Python
python3.4控制用户输入与输出的方法
Oct 17 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
浅谈python3.6的tkinter运行问题
Feb 22 Python
python 计算一个字符串中所有数字的和实例
Jun 11 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
查看keras的默认backend实现方式
Jun 19 Python
Python使用openpyxl批量处理数据
Jun 23 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使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
PHP设计模式之观察者模式定义与用法示例
2018/08/04 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
JavaScript的类型简单说明
2010/09/03 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
如何在JavaScript中实现私有属性的写类方式(二)
2013/12/04 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
element-ui 表格实现单元格可编辑的示例
2018/02/26 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
Python错误: SyntaxError: Non-ASCII character解决办法
2017/06/08 Python
python 中split 和 strip的实例详解
2017/07/12 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Python测试模块doctest使用解析
2019/08/10 Python
python中web框架的自定义创建
2019/09/08 Python
基于python调用psutil模块过程解析
2019/12/20 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
教师求职推荐信范文
2013/11/20 职场文书
《鱼游到了纸上》教学反思
2014/02/20 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
小学中队长竞选稿
2015/11/20 职场文书
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
python标准库ElementTree处理xml
2022/05/20 Python