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 相关文章推荐
一则python3的简单爬虫代码
May 26 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
python实现windows壁纸定期更换功能
Jan 21 Python
python实现列表的排序方法分享
Jul 01 Python
python中dict使用方法详解
Jul 17 Python
Python批量启动多线程代码实例
Feb 18 Python
Python接口开发实现步骤详解
Apr 26 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
Aug 07 Python
如何用Python绘制3D柱形图
Sep 16 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 Python
OpenCV-Python实现人脸美白算法的实例
Jun 11 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版淘宝网查询商品接口代码示例
2014/06/17 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
php compact 通过变量创建数组
2016/11/15 PHP
php删除一个路径下的所有文件夹和文件的方法
2018/02/07 PHP
Laravel find in set排序实例
2019/10/09 PHP
Jquery ui css framework
2010/06/28 Javascript
jQuery简单实现banner图片切换
2014/01/02 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
2016/10/11 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
el-form 多层级表单的实现示例
2020/09/10 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
Python爬虫运用正则表达式的方法和优缺点
2019/08/25 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
python下载的库包存放路径
2020/07/27 Python
《永远的白衣战士》教学反思
2014/04/25 职场文书
开工典礼策划方案
2014/05/23 职场文书
授权委托书公证
2014/09/14 职场文书
创先争优演讲稿
2014/09/15 职场文书
群众路线对照检查材料
2014/09/22 职场文书
迎国庆横幅标语
2014/10/08 职场文书
车辆年检委托书范本
2014/10/14 职场文书
投标承诺函格式
2015/01/21 职场文书
营业员岗位职责
2015/02/11 职场文书
行为习惯主题班会
2015/08/14 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书
幼师必备:幼儿园期末教师评语50条
2019/11/01 职场文书
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers