字符串模块和str之间的关系

时间:2010-01-08 07:12:58

标签: python

str string 之间有什么区别或关系?

import string 
print str
print string 

5 个答案:

答案 0 :(得分:23)

strbuilt-in function(实际上是class),它将其参数转换为字符串。 string是一个module,可提供常见的string操作。

>>> str
<class 'str'>
>>> str(42)
'42'
>>> import string
>>> string
<module 'string' from '/usr/lib/python3.1/string.py'>
>>> string.digits
'0123456789'

换句话说,str个对象是某个对象o的文本表示,通常是通过调用str(o)创建的。这些对象在其上定义了某些方法。模块string提供了在使用字符串时非常有用的其他函数常量

答案 1 :(得分:6)

字符串模块和str类型之间存在一些重叠,主要是出于历史原因。在Python的早期版本中,str对象没有方法,因此所有字符串操作都是使用字符串模块中的函数完成的。当方法被添加到str类型时(在Python 1.5中?),函数被保留在字符串模块中以实现兼容性,但现在只转发到等效的str方法。

但是,字符串模块还包含不是str上方法的常量和函数,例如格式,字符转换等。

答案 2 :(得分:4)

像Stephan202一样说:str是一个内置函数,它只用于将项目转换为字符串。它还有许多有用的方法。 例如:

>>> str(100)
'100' # converts integer into string.

>>> str.lower('foobar')
'FOOBAR'

现在让我们来谈谈String .--它是一个python模块,它具有非常有趣的功能。 其中一个模板东西

>>> from string import  Template 
>>> t = Template('$foo is a test')
>>> t.substitute (foo='this')
'this is a test' # Replaces $foo variable with 'this'

还有其他有用的方法。假设你想要所有的ascii字母

>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

答案 3 :(得分:0)

“string”是一个提供字符串处理函数的模块,str是一个将对象转换为字符串表示的内置函数。两者之间没有任何关系。

答案 4 :(得分:0)

String是一个模块,但与'str'类具有相同的能力。

我建议输入'string'并输入'。'并等待几秒钟,然后会出现一个弹出式列表,你会看到许多可用的方法也是'str'的一部分。

>>>dir(string)

['Formatter','Template','_ TemplateMetaclass',' builtins ',' doc ','文件',' 名称','','_ fllo','_ ifmap','_ ifmapL','_ int','_ long','_ multimap','_是',' ascii_letters','ascii_lowercase','ascii_uppercase','atof','atof_error','atoi','atoi_error','atol','atol_error','capitalize','capwords','center','count' ,'digits','expandtabs','find','hexdigits','index','index_error','join','joinfields','letters','ljust','lower','lowercase',' lstrip','maketrans','octdigits','printable','punctuation','replace','rfind','rindex','rjust','rsplit','rstrip','split','splitfields' ,'strip','swapcase','translate','upper','uppercase','whitespace','zfill']

或者你可以这样做:

>>>help(string)

现在您必须导入要使用的String,但str没有这种限制。

>>>help(str)

这也给出了类似的列表。

所以基本的区别在于你必须导入String而不是str。