string.split(text)或text.split():有什么区别?

时间:2008-12-02 11:41:06

标签: python string split

有一件事我不明白......

想象一下,您有一个文本 =“hello world”,并且您想将其拆分。

在某些地方,我看到有人希望将文字分开:

string.split(text)

在其他地方,我看到人们正在做:

text.split()

有什么区别?为什么你以某种方式或以其他方式做?你能给我一个理论解释吗?

5 个答案:

答案 0 :(得分:22)

有趣的是,两者的文档字符串在Python 2.5.1中并不完全相同:

>>> import string
>>> help(string.split)
Help on function split in module string:

split(s, sep=None, maxsplit=-1)
    split(s [,sep [,maxsplit]]) -> list of strings

    Return a list of the words in the string s, using sep as the
    delimiter string.  If maxsplit is given, splits at no more than
    maxsplit places (resulting in at most maxsplit+1 words).  If sep
    is not specified or is None, any whitespace string is a separator.

    (split and splitfields are synonymous)

>>> help("".split)
Help on built-in function split:

split(...)
    S.split([sep [,maxsplit]]) -> list of strings

    Return a list of the words in the string S, using sep as the
    delimiter string.  If maxsplit is given, at most maxsplit
    splits are done. If sep is not specified or is None, any
    whitespace string is a separator.

深入挖掘,你会发现这两种形式是完全等效的,因为string.split(s)实际上会调用s.split()(搜索 split -functions)。

答案 1 :(得分:13)

string.split(stringobj)string模块的一项功能,必须单独导入。曾几何时,这是拆分字符串的唯一方法。这是你正在看的一些旧代码。

stringobj.split()是字符串对象stringobj的一项功能,它比string模块更新。但是很老了。这是目前的做法。

答案 2 :(得分:5)

额外注意:str是字符串类型,正如S.Lott在上面指出的那样。这意味着这两种形式:

'a b c'.split()
str.split('a b c')

# both return ['a', 'b', 'c']

...是等价的,因为str.split是未绑定的方法,而s.splitstr对象的绑定方法。在第二种情况下,传递给str.split的字符串在方法中用作self

这在这里没有多大区别,但它是Python对象系统工作方式的一个重要特征。

More info about bound and unbound methods.

答案 3 :(得分:5)

简短回答:字符串模块是在python 1.6之前执行这些操作的唯一方法 - 它们已经作为方法添加到字符串中。

答案 4 :(得分:1)

使用您喜欢的任何一种,但要意识到str.split是推荐的方式。 : - )

string.split是一种做同样事情的旧方法。

str.split效率更高一些(因为您不必导入字符串模块或从中查找任何名称),但如果您更喜欢string.split,则不足以产生巨大的差异。