str 和 string 之间有什么区别或关系?
import string
print str
print string
答案 0 :(得分:23)
str
是built-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)
>>> 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。