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采用raw_input读取输入值的方法
Aug 18 Python
python写入xml文件的方法
May 08 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
Dec 25 Python
python使用itchat实现手机控制电脑
Feb 22 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
Python闭包函数定义与用法分析
Jul 20 Python
Python实现端口检测的方法
Jul 24 Python
Python sublime安装及配置过程详解
Jun 29 Python
python字典key不能是可以是啥类型
Aug 04 Python
Python 可视化神器Plotly详解
Dec 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
PHP函数in_array()使用详解
2014/08/20 PHP
如何打开php的gd2库
2017/02/09 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
JavaScript 动态改变图片大小
2009/06/11 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
JS插件plupload.js实现多图上传并显示进度条
2016/11/29 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
python中pycurl库的用法实例
2014/09/30 Python
Python单例模式的两种实现方法
2017/08/14 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
canvas进阶之如何画出平滑的曲线
2018/10/15 HTML / CSS
电子信息毕业生自荐信
2013/11/16 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
《月光曲》教学反思
2016/02/16 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS