...请注意,值将由一个或多个空格或 TAB 字符分隔
如果有多个不同类型的分隔字符,我该如何使用 split() 方法,就像这种情况一样?
使用正则表达式进行拆分,而不仅仅是一个分隔符:
默认情况下 split 可以处理多种类型的空白,不确定它是否足以满足您的需要,但请尝试:
>>> s = "a \tb c\t\t\td"
>>> s.split()
['a', 'b', 'c', 'd']
它当然适用于混合的多个空格和制表符。
我遇到了一些由不同空格字符分隔的字符串的相同问题,并使用了\s,如正则表达式库规范中所示。
\s 匹配任何空白字符,这相当于集合 [ \t\n\r\f\v]。
您将需要导入re作为正则表达式处理程序:
import re
line = "something separated\t by \t\t\t different \t things"
workstr = re.sub('\s+','\t',line)
\s
因此,任何重复一次或多次 ( ) 的空格或分隔符 ( +
) 都将转换为单个列表 ( \t
),您可以使用 split('\t') 重新处理
workstr = "something`\t`separated`\t`by`\t`different`\t`things"
newline = workstr.split('\t')
newline = ['something','separated','by','different','things']
先进行文本替换,然后拆分。
例如用空格替换所有制表符,然后按空格分割。
您可以先使用正则表达式:
import re
re.sub('\s+', ' ', 'text with whitespace etc').split()
['text', 'with', 'whitespace', 'etc']
对于空白分隔符,str.split()
已经做了你可能想要的。来自Python 标准库,
海峡 拆分([ sep [, maxsplit ]])
如果sep未指定或 is
None
,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果将在开头或结尾不包含空字符串。因此,使用 None 分隔符拆分空字符串或仅包含空格的字符串将返回 []。例如,
' 1 2 3 '.split()
返回['1', '2', '3']
和' 1 2 3 '.split(None, 1)
返回['1', '2 3 ']
。