gpt4 book ai didi

python使用str & repr转换字符串

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python使用str & repr转换字符串由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

可能比较 low 还是记录一下:

str 和 repr的使用过程 。

  1. str 是一个类型 (int, long 类似), 同样她也可以作为一个工厂方法 实例一个 string
  2. repr 是python 内置的函数, 用于保留一个 打印值在python 代码片段里的真实状态

好,以上全是废话 。

?
1
2
3
4
5
6
7
8
9
10
11
>>> 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里交互:

?
1
2
3
4
5
6
7
8
9
>>> 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() 。

来看代码:

?
1
2
3
4
>>> print str ( '你好' )
你好
>>> print repr ( '你好' )
'\xc4\xe3\xba\xc3'

之前str('你好')显示的是'\xc4\xe3\xba\xc3',而一经过print,就变成了正确的'你好'。上面说过了,命令行里直接输入一个变量,显示的是它在python后台存储的数据;而用print出来的东西,会显出出尽量友好、让人能看懂的东西。 理解了这个,对print这两个结果的不同,也就全然理解了。然后也就放弃print作为考据的心了.

最后此篇关于python使用str & repr转换字符串的文章就讲到这里了,如果你想了解更多关于python使用str & repr转换字符串的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com