在Python中将具有未知空格数的字符串拆分为分隔符

use*_*503 50 python

我需要一个类似于string.split('')的函数,但可能有多个空格,并且有意义的字符之间有不同的数量.像这样的东西:

s = ' 1234    Q-24 2010-11-29         563   abc  a6G47er15               '
ss = s.magicSplit()
print ss
['1234','Q-24','2010-11-29','563','abc','a6G47er15']
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式使用正则表达式来捕捉它们之间的空格吗?

有人可以帮帮忙吗?

aar*_*ing 93

尝试

>>> ' 1234    Q-24 2010-11-29         563   abc  a6G47er15'.split()
['1234', 'Q-24', '2010-11-29', '563', 'abc', 'a6G47er15']
Run Code Online (Sandbox Code Playgroud)

或者如果你想

>>> class MagicString(str):
...     magicSplit = str.split
... 
>>> s = MagicString(' 1234    Q-24 2010-11-29         563   abc  a6G47er15')
>>> s.magicSplit()
['1234', 'Q-24', '2010-11-29', '563', 'abc', 'a6G47er15']
Run Code Online (Sandbox Code Playgroud)

  • 该死的!为什么我没有任何参数尝试split()?:) 谢谢! (22认同)
  • 如果这实际上是一个问题(它几乎从来没有)那么`[s.split('')中的子代表,如果是s]` (3认同)
  • 请注意,如果没有参数,split()会在"任何空格"上进行拆分,因此制表符(例如)也会被视为分隔符(并作为单个分隔符吸收到制表符空间序列中). (2认同)

Bil*_*nch 20

s = ' 1234    Q-24 2010-11-29         563   abc  a6G47er15               '
ss = s.split()
print ss
['1234','Q-24','2010-11-29','563','abc','a6G47er15']
Run Code Online (Sandbox Code Playgroud)


Dan*_*hez 5

如果您的数据中有单个空格(例如一个字段中的地址),那么当分隔符有两个或多个空格时,这里有一个解决方案:

with open("textfile.txt") as f:
    content = f.readlines()

    for line in content:
        # Get all variable-length spaces down to two. Then use two spaces as the delimiter.
        while line.replace("   ", "  ") != line:
            line = line.replace("   ", "  ")

        # The strip is optional here.
        data = line.strip().split("  ")
        print(data)
Run Code Online (Sandbox Code Playgroud)