拆分由多个可能的字符分隔的字符串?

时间:2012-12-06 05:09:34

标签: python split

  

...请注意,值将由一个或多个空格或TAB字符

分隔

如果有多个不同类型的分隔字符,如何在这种情况下使用split()方法?

6 个答案:

答案 0 :(得分:2)

使用正则表达式而不只是一个分隔符进行拆分:

http://docs.python.org/2/library/re.html

答案 1 :(得分:2)

默认情况下,分割可以处理多种类型的空白区域,不确定它是否足以满足您的需要但是可以尝试:

>>> s = "a \tb     c\t\t\td"
>>> s.split()
['a', 'b', 'c', 'd']

它肯定适用于多个空格和标签混合。

答案 2 :(得分:2)

我遇到了一些问题,一些字符串被不同的空格字符分隔,并使用 \ s ,如Regular Expressions库规范中所示。

\ s匹配任何空白字符,这相当于集合[\ t \ n \ r \ n \ 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('workstr = "something`\t`separated`\t`by`\t`different`\t`things" newline = workstr.split('\t') newline = ['something','separated','by','different','things'] 重新处理\ T')

{{1}}

答案 3 :(得分:1)

首先进行文本替换然后拆分。

e.g。用空格替换所有制表符,然后在空格上分割。

答案 4 :(得分:1)

您可以先使用正则表达式:

import re
re.sub('\s+', ' ', 'text     with    whitespace        etc').split()
['text', 'with', 'whitespace', 'etc']

答案 5 :(得分:1)

对于空白分隔符,str.split()已经完成了您想要的操作。来自the Python Standard Library

  

str。拆分([ sep [, maxsplit ]])

     
    

如果未指定 sep None ,则会应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串有前导或尾随空格,结果将在开头或结尾不包含空字符串。因此,将空字符串或仅由空格组成的字符串拆分为无分隔符将返回[]。

         

例如,' 1 2 3 '.split()返回['1', '2', '3']' 1 2 3 '.split(None, 1)返回['1', '2 3 ']