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 模块、包调用&amp;路径详解
Oct 25 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
Oct 26 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
Dec 05 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
解决python文件双击运行秒退的问题
Jun 24 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
Python如何实现动态数组
Nov 02 Python
使用python远程操作linux过程解析
Dec 04 Python
python实现图片二值化及灰度处理方式
Dec 07 Python
Python多重继承之菱形继承的实例详解
Feb 12 Python
基于python实现删除指定文件类型
Jul 21 Python
Django contrib auth authenticate函数源码解析
Nov 12 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
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php Notice: Undefined index 错误提示解决方法
2010/08/29 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
关于PHP5.6+版本“No input file specified”问题的解决
2019/12/11 PHP
img标签中onerror用法
2009/08/13 Javascript
jQuery MD5加密实现代码
2010/03/15 Javascript
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
js星星评分效果
2014/07/24 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
美国网上鞋子零售商:Dr. Scholl’s Shoes
2017/11/17 全球购物
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
童装店创业计划书
2014/01/09 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
鸦片战争观后感
2015/06/09 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python