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

时间:2010-11-30 01:11:37

标签: 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']

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

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:84)

尝试

>>> ' 1234    Q-24 2010-11-29         563   abc  a6G47er15'.split()
['1234', 'Q-24', '2010-11-29', '563', 'abc', 'a6G47er15']

或者如果你想要

>>> 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']

答案 1 :(得分:19)

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

答案 2 :(得分:3)

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

refresh_token = session.getRefreshToken();   // you'll get session from calling cognitoUser.getSession()

if (AWS.config.credentials.needsRefresh()) {

  cognitoUser.refreshSession(refresh_token, (err, session) => {
    if(err) {
      console.log(err);
    } 
    else {
      AWS.config.credentials.params.Logins['cognito-idp.<YOUR-REGION>.amazonaws.com/<YOUR_USER_POOL_ID>']  = session.getIdToken().getJwtToken();
      AWS.config.credentials.refresh((err)=> {
        if(err)  {
          console.log(err);
        }
        else{
          console.log("TOKEN SUCCESSFULLY UPDATED");
        }
      });
    }
  });
}

答案 3 :(得分:0)

要将行分隔为多个空格,同时在字符串中保留单个空格:

with open("textfile.txt") as f:
   for line in f:
      line = [i.strip() for i in line.split('  ') if i]
      print(line)

答案 4 :(得分:0)

这个问题有很多解决方案。

1。)使用split()是最简单的方法

s = ' 1234    Q-24 2010-11-29         563   abc  a6G47er15              '
s = s.split()
print(s)


Output >> ['1234','Q-24','2010-11-29','563','abc','a6G47er15']

2。)还有另一种使用findall()方法解决此问题的方法,您需要在python文件的开头“导入重新导入”。

import re
def MagicString(str):
    return re.findall(r'\S+', str)
s = ' 1234    Q-24 2010-11-29         563   abc  a6G47er15'
s = MagicString(s)
print(s)
print(MagicString('    he  ll   o'))


Output >> ['1234','Q-24','2010-11-29','563','abc','a6G47er15']
Output >> ['he','ll','o']

3。)如果要删除任何前导(开头的空格)和结尾(结尾的空格),请使用strip()。

s = '   hello          '
output = s.strip()
print(output)


Output >> hello