对于没有参数的情况,如何实现str.split

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对于没有参数的情况,如何实现str.split相关的知识,希望对你有一定的参考价值。

没有给出分隔符时,Python是否使用正则表达式拆分?

我看不到str.__file__,在这里other solutions work也没有,因为splitstr类型的函数(尽管它是内置的)。

例如'a b' --> ['a', 'b']

背景我正在考虑用多个空格替换所有相邻的空格,这些空格对性能至关重要的许多文件,尽管我想知道正则表达式的分割是否会足够快:也许内置显示了更好的方法。

答案

首先,str内置在python中,这意味着要查看str.split的源代码,您必须深入研究定义它的C source code

现在,进入您的实际问题。我觉得re.sub不仅会过分使用,而且会比使用内置的str.split慢(完全公开:我没有时间数据来支持这一点-这只是我的一种感觉)。

现在,str.split默认情况下在空格上分割(它使用一个optional参数,该参数可用于指定要在其上分割的字符)。它还会分割任意数量的连续空白字符。现在,这意味着如果您的字符串中包含空格字符,则对该字符串调用str.split将返回一个非空子字符串列表,这些子字符串都不包含任何空格。因此,如果您的字符串具有异构的连续空白字符,则这些空白字符将被彼此区别对待。

以下是几个示例:

In [31]: s = 'hello world'  # one space

In [32]: s.split()
Out[32]: ['hello', 'world']

In [33]: s = 'hello 	world'  # multiple consecutive whitespace characters

In [34]: s.split()
Out[34]: ['hello', 'world']

In [35]: s = 'hello	world'  # a different whitespace character

In [36]: s.split()
Out[36]: ['hello', 'world']

In [37]: s = 'hello		world'  # multiple consecutive tab characters

In [38]: s.split()
Out[38]: ['hello', 'world']

In [39]: s = 'hello  world'  # multiple consecutive space characters

In [40]: s.split()
Out[40]: ['hello', 'world']

如您所见,空格的存在并不重要-当“至少一个空格字符”出现时,考虑str.split拆分。

现在,如果要用一个空格替换所有连续的空白字符,可以用str.splitstr.join

In [41]: ' '.join(['hello', 'world'])  # join the strings 'hello' and 'world' with a space between them
Out[41]: 'hello world'

In [42]: s = 'hello  world'  # notice two spaces between 'hello' and 'world'

In [43]: ' '.join(s.split())
Out[43]: 'hello world'  # notice only one space between 'hello' and 'world'
另一答案

它不使用正则表达式,它使用<wctypes.h>iswspace(...)

我们可以在这里看到它使用了宏STRINGLIB_ISSPACE(...)https://github.com/certik/python-3.3/blob/master/Objects/stringlib/split.h

这里定义为wctypes.h的iswspace:http://svn.python.org/projects/python/trunk/Include/unicodeobject.h

以上是关于对于没有参数的情况,如何实现str.split的主要内容,如果未能解决你的问题,请参考以下文章

split()

如何使用 .str 和 .split 将 pandas 代码转换为 Pyspark

如何把1234567890变成1,234,567,890?

python split函数用法

【Python】split()函数

python split函数