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基础之getpass模块详细介绍
Aug 10 Python
python编写Logistic逻辑回归
Dec 30 Python
用tensorflow搭建CNN的方法
Mar 05 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
python+tkinter实现学生管理系统
Aug 20 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
Python ini文件常用操作方法解析
Apr 26 Python
Pytorch高阶OP操作where,gather原理
Apr 30 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
python适合做数据挖掘吗
Jun 16 Python
详解Python模块化编程与装饰器
Jan 16 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计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
php网页病毒清除类
2014/12/08 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
2018/10/29 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
vue组件化中slot的基本使用方法
2019/05/01 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Python字符串拼接六种方法介绍
2017/12/18 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
pymysql 开启调试模式的实现
2019/09/24 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
python系列 文件操作的代码
2019/10/06 Python
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
德国50岁以上交友网站:Lebensfreunde
2020/03/18 全球购物
大学军训感言1000字
2014/02/25 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
教师先进个人材料
2014/12/17 职场文书