已给予:
My='我的名字叫David'
我想把它做成一个有2个值的列表
我希望名单是:
Mylist=['我的名字是','David']
因此,我尝试使用:
Mylist=my.plit('',1)
但我很快发现它从左向右分裂,又回到了原来的位置:
Mylist=['我的','名字是大卫']
为了避免使用许多其他代码,我想知道是否有方法可以让它从右向左拆分,或者与拆分的方式相反?
# 回答1
以下是几种方法,但每种方法都需要额外的代码。
- >>> s = 'my name is david'
- >>> s.split()
- ['my', 'name', 'is', 'david']
- >>> s1 = 'my david'
- >>> s2 = 'david'
- >>> def split_once_rightmost(s):
- ... seq = s.split()
- ... if len(seq) > 1:
- ... return [" ".join(seq[0:-1]), seq[-1]]
- ... return seq
- ...
- >>> split_once_rightmost(s)
- ['my name is', 'david']
- >>> split_once_rightmost(s1)
- ['my', 'david']
- >>> split_once_rightmost(s2)
- ['david']
- >>> seq = s.replace(" ", "***", s.count(" ")-1).split(" ")
- >>> seq[0] = seq[0].replace("***", " ")
- >>> seq
- ['my name is', 'david']
- >>>
# 回答2 - >>> my = 'my name is david'
- >>> import re
- >>> re.findall('(.*)\s(.*)', my)
- [('my name is', 'david')]
-
或
- >>> my
- 'my name is david'
- >>> lst = my.split(' ')
- >>> lst
- ['my', 'name', 'is', 'david']
- >>> result = []
- >>> result.append(' '.join(lst[:-1]))
- >>> result.append(lst[-1])
- >>> result
- ['my name is', 'david']
-
# 回答3
我知道会有一场
请注意
解决方案。感谢你张贴巴西略。可以使用Match Object方法
群组
来创建特工的我的名单。
- >>> my = 'my name is david'
- >>> import re
- >>> patt = re.compile('(.*)\s(.*)')
- >>> m = patt.match(my)
- >>> [m.group(1), m.group(2)]
- ['my name is', 'david']
- >>>
# 回答4
榜单的基本原理如下:
- >>> my = my.split()
- >>> print (' '.join(my[:-1]), my[-1])
- ('my name is', 'david')
-