python使用str & repr转换字符串

 更新时间:2016年10月13日 08:43:57   投稿:hebedich  
str() 是将 数值 转成字符串 repr() 是将一个对象 转成字符串 显示 看明白了么:str()是将一个对象转化成str对象 repr()是将一个对象可视化,使用字符串输出,使编程人员看到其的内部结构

可能比较 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的上下文管理器with的用法

    浅谈python的上下文管理器with的用法

    这篇文章主要介绍了浅谈python的上下文管理器with的用法,在一段代码执行前, 先执行__enter__中的代码用于预处理,然后执行 with 中间的代码,最后执行完这段代码之后再执行 exit 中的代码进行清理工作,需要的朋友可以参考下
    2023-07-07
  • python 实现网上商城,转账,存取款等功能的信用卡系统

    python 实现网上商城,转账,存取款等功能的信用卡系统

    本篇文章主要介绍 基于python 实现信用卡系统,附有代码实例,对于用python 开发网络上传系统具有参考价值,有需要的朋友可以看下
    2016-07-07
  • Python中subprocess模块用法实例详解

    Python中subprocess模块用法实例详解

    这篇文章主要介绍了Python中subprocess模块用法,实例分析了subprocess模块的相关使用技巧,需要的朋友可以参考下
    2015-05-05
  • Python eval()函数和ast.literal_eval()的区别你知道吗

    Python eval()函数和ast.literal_eval()的区别你知道吗

    这篇文章主要为大家详细介绍了Python eval()函数和ast.literal_eval()的区,文中图片代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • 使用Python通过oBIX协议访问Niagara数据的示例

    使用Python通过oBIX协议访问Niagara数据的示例

    这篇文章主要介绍了使用Python通过oBIX协议访问Niagara数据的示例,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-12-12
  • Python使用多进程运行含有任意个参数的函数

    Python使用多进程运行含有任意个参数的函数

    这篇文章主要介绍了Python使用多进程运行含有任意个参数的函数,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python实现的各种常见分布算法示例

    Python实现的各种常见分布算法示例

    这篇文章主要介绍了Python实现的各种常见分布算法,结合实例形式总结分析了Python常见的各种分布算法相关实现技巧,包括二项分布、离散分布、泊松分布、正态分布、指数分布等算法实现方法,需要的朋友可以参考下
    2018-12-12
  • Python使用Turtle库绘制一棵西兰花

    Python使用Turtle库绘制一棵西兰花

    今天小编就为大家分享一篇Python使用Turtle库绘制一棵西兰花,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python语言描述最大连续子序列和

    Python语言描述最大连续子序列和

    这篇文章主要介绍了Python语言描述最大连续子序列和,具有一定借鉴价值,需要的朋友可以了解下。
    2017-12-12
  • 如何使用Django默认的Auth权限管理系统

    如何使用Django默认的Auth权限管理系统

    本文主要介绍了如何使用Django默认的Auth权限管理系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02

最新评论