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 相关文章推荐
Linux下使用python自动修改本机网关代码分享
May 21 Python
python编程开发之textwrap文本样式处理技巧
Nov 13 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
Django框架模板用法入门教程
Nov 04 Python
python 异步async库的使用说明
May 04 Python
基于keras中的回调函数用法说明
Jun 17 Python
详解python tkinter 图片插入问题
Sep 03 Python
Django如何实现密码错误报错提醒
Sep 04 Python
详解Python3 定义一个跨越多行的字符串的多种方法
Sep 06 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 Python
python异常中else的实例用法
Jun 15 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+mysql实现无限级分类
2015/11/11 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
深入分析PHP设计模式
2020/06/15 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
jQuery插件Slider Revolution实现响应动画滑动图片切换效果
2015/06/05 Javascript
再谈JavaScript线程
2015/07/10 Javascript
JavaScript小技巧整理篇(非常全)
2016/01/26 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
实例分析vue循环列表动态数据的处理方法
2018/09/28 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Django Highcharts制作图表
2016/08/27 Python
Python中正则表达式详解
2017/05/17 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
python PIL模块的基本使用
2020/09/29 Python
CSS3实现彩色进度条动画的示例
2020/10/29 HTML / CSS
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
厂长岗位职责
2014/02/19 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
春节慰问信范文
2015/02/15 职场文书
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL