str.split(sep,maxsplit)函数

已给予:
My='我的名字叫David'
我想把它做成一个有2个值的列表
我希望名单是:
Mylist=['我的名字是','David']
因此,我尝试使用:
Mylist=my.plit('',1)
但我很快发现它从左向右分裂,又回到了原来的位置:
Mylist=['我的','名字是大卫']
为了避免使用许多其他代码,我想知道是否有方法可以让它从右向左拆分,或者与拆分的方式相反?

# 回答1


以下是几种方法,但每种方法都需要额外的代码。

选择 | 换行 | 行号
  1. >>> s = 'my name is david'
  2. >>> s.split()
  3. ['my', 'name', 'is', 'david']
  4. >>> s1 = 'my david'
  5. >>> s2 = 'david'
  6. >>> def split_once_rightmost(s):
  7. ...     seq = s.split()
  8. ...     if len(seq) > 1:
  9. ...         return [" ".join(seq[0:-1]), seq[-1]]
  10. ...     return seq
  11. ... 
  12. >>> split_once_rightmost(s)
  13. ['my name is', 'david']
  14. >>> split_once_rightmost(s1)
  15. ['my', 'david']
  16. >>> split_once_rightmost(s2)
  17. ['david']
  18. >>> seq = s.replace(" ", "***", s.count(" ")-1).split(" ")
  19. >>> seq[0] = seq[0].replace("***", " ")
  20. >>> seq
  21. ['my name is', 'david']
  22. >>>
# 回答2

选择 | 换行 | 行号
  1. >>> my = 'my name is david'
  2. >>> import re
  3. >>> re.findall('(.*)\s(.*)', my)
  4. [('my name is', 'david')]
  5.  

选择 | 换行 | 行号
  1. >>> my
  2. 'my name is david'
  3. >>> lst = my.split(' ')
  4. >>> lst
  5. ['my', 'name', 'is', 'david']
  6. >>> result = []
  7. >>> result.append(' '.join(lst[:-1]))
  8. >>> result.append(lst[-1])
  9. >>> result
  10. ['my name is', 'david']
  11.  
# 回答3


我知道会有一场
请注意
解决方案。感谢你张贴巴西略。可以使用Match Object方法
群组
来创建特工的我的名单。

选择 | 换行 | 行号
  1. >>> my = 'my name is david'
  2. >>> import re
  3. >>> patt = re.compile('(.*)\s(.*)')
  4. >>> m = patt.match(my)
  5. >>> [m.group(1), m.group(2)]
  6. ['my name is', 'david']
  7. >>> 
# 回答4


榜单的基本原理如下:

选择 | 换行 | 行号
  1. >>> my = my.split()
  2. >>> print (' '.join(my[:-1]), my[-1])
  3. ('my name is', 'david')
  4.  

标签: python

添加新评论