我需要一个类似于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']
我可以以某种方式使用正则表达式来捕捉它们之间的那些空格吗?
有人可以帮忙吗?
答案 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