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编写简单的定时器的方法
May 02 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
python Pygame的具体使用讲解
Nov 03 Python
Python爬虫实战:分析《战狼2》豆瓣影评
Mar 26 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
May 04 Python
python保存数据到本地文件的方法
Jun 23 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
Python 转换文本编码实现解析
Aug 27 Python
python小项目之五子棋游戏
Dec 26 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
详解python爬取弹幕与数据分析
Nov 14 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 expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
Node.js进阶之核心模块https入门
2018/05/23 Javascript
Seajs源码详解分析
2019/04/02 Javascript
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
python reverse反转部分数组的实例
2018/12/13 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
优秀团支部事迹材料
2014/02/08 职场文书
党员党性分析材料
2014/02/17 职场文书
后勤主管岗位职责
2014/03/01 职场文书
新品发布会主持词
2014/04/02 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2016情人节宣传语
2015/07/14 职场文书
golang中的并发和并行
2021/05/08 Golang
Python多个MP4合成视频的实现方法
2021/07/16 Python
Golang表示枚举类型的详细讲解
2021/09/04 Golang
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis