如何在Python中按字符切片字符串? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python中按字符切片字符串? [重复]相关的知识,希望对你有一定的参考价值。

有一个包含一个或多个字符的字符串。我想切片列表,以便相邻的相同字符在同一个元素中。例如:

'a' -> ['a']
'abbbcc' -> ['a', 'bbb', 'cc']
'abcabc' -> ['a', 'b', 'c', 'a', 'b', 'c']

我如何在Python中创建它?

答案

使用itertools.groupby

from itertools import groupby

s = 'abccbba'

print([''.join(v) for _, v in groupby(s)])
# ['a', 'b', 'cc', 'bb', 'a']
另一答案

可以用re.finditer()实现

import re
s='aabccdd'
print([m.group(0) for m in re.finditer(r"(w)1*", s)])
#['aa', 'b', 'cc', 'dd']
另一答案

没有任何模块和使用for循环也可以用有趣的方式完成:

l=[]
str="aabccc"
s=str[0]
for c in str[1:]:

   if(c!=s[-1]):
        l.append(s)
        s=c
   else:
        s=s+c
l.append(s)
print(l)
另一答案

还有一个替代解决方案。你不需要在python2中导入它。在python3中,您需要从functools导入。

from functools import reduce   # in python3
s='aaabccdddddaa'
reduce(lambda x,y:x[:-1]+[x[-1]+y] if len(x)>0 and x[-1][-1]==y else x+[y], s, [])
另一答案
t=input()
c=[t[0]]
for i in range(1,len(t)):
    if t[i]==c[-1][0]:
        c[-1]=c[-1]+t[i]
    else:
        c.append(t[i])
print(c)

以上是关于如何在Python中按字符切片字符串? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在PHP中按字符将数组拆分为关联数组[重复]

在python中如何将list中的元素根据指定字符进行切片?

Spark - 如何使用列对数据框中的字符串进行切片[重复]

在 C++ 中按空格分割字符串的最快方法 [重复]

Swift 4:不推荐使用 substring(with:)':请使用字符串切片下标 [重复]

大神!!求用python写一个程序,找出给定字符串s中按字母表顺序排列的最长子串!