How do I slice a string by characters in Python? [duplicate]

Multi tool use
This question already has an answer here:
Python - Find sequence of same characters
3 answers
Splitting a string with repeated characters into a list using regex
3 answers
There is a string with one or more characters. I want to slice the list so that the adjoining same characters are in the same element. For example:
'a' -> ['a']
'abbbcc' -> ['a', 'bbb', 'cc']
'abcabc' -> ['a', 'b', 'c', 'a', 'b', 'c']
How do I make this in Python?
python
marked as duplicate by Kasrâmvd
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
8 hours ago
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
This question already has an answer here:
Python - Find sequence of same characters
3 answers
Splitting a string with repeated characters into a list using regex
3 answers
There is a string with one or more characters. I want to slice the list so that the adjoining same characters are in the same element. For example:
'a' -> ['a']
'abbbcc' -> ['a', 'bbb', 'cc']
'abcabc' -> ['a', 'b', 'c', 'a', 'b', 'c']
How do I make this in Python?
python
marked as duplicate by Kasrâmvd
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
8 hours ago
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
1
FYI, if you google "python group identical elements" or something similar you'll find plenty of recipes that would help you get started.
– Aran-Fey
15 hours ago
add a comment |
This question already has an answer here:
Python - Find sequence of same characters
3 answers
Splitting a string with repeated characters into a list using regex
3 answers
There is a string with one or more characters. I want to slice the list so that the adjoining same characters are in the same element. For example:
'a' -> ['a']
'abbbcc' -> ['a', 'bbb', 'cc']
'abcabc' -> ['a', 'b', 'c', 'a', 'b', 'c']
How do I make this in Python?
python
This question already has an answer here:
Python - Find sequence of same characters
3 answers
Splitting a string with repeated characters into a list using regex
3 answers
There is a string with one or more characters. I want to slice the list so that the adjoining same characters are in the same element. For example:
'a' -> ['a']
'abbbcc' -> ['a', 'bbb', 'cc']
'abcabc' -> ['a', 'b', 'c', 'a', 'b', 'c']
How do I make this in Python?
This question already has an answer here:
Python - Find sequence of same characters
3 answers
Splitting a string with repeated characters into a list using regex
3 answers
python
python
edited 10 hours ago


Peter Mortensen
13.8k1986113
13.8k1986113
asked 15 hours ago


Hank ChowHank Chow
521
521
marked as duplicate by Kasrâmvd
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
8 hours ago
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by Kasrâmvd
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
8 hours ago
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
1
FYI, if you google "python group identical elements" or something similar you'll find plenty of recipes that would help you get started.
– Aran-Fey
15 hours ago
add a comment |
1
FYI, if you google "python group identical elements" or something similar you'll find plenty of recipes that would help you get started.
– Aran-Fey
15 hours ago
1
1
FYI, if you google "python group identical elements" or something similar you'll find plenty of recipes that would help you get started.
– Aran-Fey
15 hours ago
FYI, if you google "python group identical elements" or something similar you'll find plenty of recipes that would help you get started.
– Aran-Fey
15 hours ago
add a comment |
5 Answers
5
active
oldest
votes
Use itertools.groupby
:
from itertools import groupby
s = 'abccbba'
print([''.join(v) for _, v in groupby(s)])
# ['a', 'b', 'cc', 'bb', 'a']
add a comment |
Can be achieved with re.finditer()
import re
s='aabccdd'
print([m.group(0) for m in re.finditer(r"(w)1*", s)])
#['aa', 'b', 'cc', 'dd']
add a comment |
Without any modules and using for loop also it can be done in interesting way:
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)
New contributor
Tojrah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
Just one more alternative solution. You need no import for it in python2. In python3 you need import from 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, )
5
Wow...this is as unreadable as it could get...
– heemayl
12 hours ago
add a comment |
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)
New contributor
Mr.A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Please add some text to make the answer more descriptive.
– v.coder
7 hours ago
add a comment |
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
Use itertools.groupby
:
from itertools import groupby
s = 'abccbba'
print([''.join(v) for _, v in groupby(s)])
# ['a', 'b', 'cc', 'bb', 'a']
add a comment |
Use itertools.groupby
:
from itertools import groupby
s = 'abccbba'
print([''.join(v) for _, v in groupby(s)])
# ['a', 'b', 'cc', 'bb', 'a']
add a comment |
Use itertools.groupby
:
from itertools import groupby
s = 'abccbba'
print([''.join(v) for _, v in groupby(s)])
# ['a', 'b', 'cc', 'bb', 'a']
Use itertools.groupby
:
from itertools import groupby
s = 'abccbba'
print([''.join(v) for _, v in groupby(s)])
# ['a', 'b', 'cc', 'bb', 'a']
edited 15 hours ago


Aran-Fey
20.9k53671
20.9k53671
answered 15 hours ago


AustinAustin
12.3k3930
12.3k3930
add a comment |
add a comment |
Can be achieved with re.finditer()
import re
s='aabccdd'
print([m.group(0) for m in re.finditer(r"(w)1*", s)])
#['aa', 'b', 'cc', 'dd']
add a comment |
Can be achieved with re.finditer()
import re
s='aabccdd'
print([m.group(0) for m in re.finditer(r"(w)1*", s)])
#['aa', 'b', 'cc', 'dd']
add a comment |
Can be achieved with re.finditer()
import re
s='aabccdd'
print([m.group(0) for m in re.finditer(r"(w)1*", s)])
#['aa', 'b', 'cc', 'dd']
Can be achieved with re.finditer()
import re
s='aabccdd'
print([m.group(0) for m in re.finditer(r"(w)1*", s)])
#['aa', 'b', 'cc', 'dd']
answered 15 hours ago
denis_lordenis_lor
1,37111130
1,37111130
add a comment |
add a comment |
Without any modules and using for loop also it can be done in interesting way:
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)
New contributor
Tojrah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
Without any modules and using for loop also it can be done in interesting way:
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)
New contributor
Tojrah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
Without any modules and using for loop also it can be done in interesting way:
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)
New contributor
Tojrah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Without any modules and using for loop also it can be done in interesting way:
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)
New contributor
Tojrah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Tojrah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
answered 14 hours ago
TojrahTojrah
461
461
New contributor
Tojrah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Tojrah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Tojrah is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
add a comment |
add a comment |
Just one more alternative solution. You need no import for it in python2. In python3 you need import from 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, )
5
Wow...this is as unreadable as it could get...
– heemayl
12 hours ago
add a comment |
Just one more alternative solution. You need no import for it in python2. In python3 you need import from 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, )
5
Wow...this is as unreadable as it could get...
– heemayl
12 hours ago
add a comment |
Just one more alternative solution. You need no import for it in python2. In python3 you need import from 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, )
Just one more alternative solution. You need no import for it in python2. In python3 you need import from 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, )
answered 14 hours ago
quantummindquantummind
1,3541817
1,3541817
5
Wow...this is as unreadable as it could get...
– heemayl
12 hours ago
add a comment |
5
Wow...this is as unreadable as it could get...
– heemayl
12 hours ago
5
5
Wow...this is as unreadable as it could get...
– heemayl
12 hours ago
Wow...this is as unreadable as it could get...
– heemayl
12 hours ago
add a comment |
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)
New contributor
Mr.A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Please add some text to make the answer more descriptive.
– v.coder
7 hours ago
add a comment |
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)
New contributor
Mr.A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Please add some text to make the answer more descriptive.
– v.coder
7 hours ago
add a comment |
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)
New contributor
Mr.A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
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)
New contributor
Mr.A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Mr.A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
answered 8 hours ago


Mr.AMr.A
112
112
New contributor
Mr.A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
New contributor
Mr.A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Mr.A is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
Please add some text to make the answer more descriptive.
– v.coder
7 hours ago
add a comment |
Please add some text to make the answer more descriptive.
– v.coder
7 hours ago
Please add some text to make the answer more descriptive.
– v.coder
7 hours ago
Please add some text to make the answer more descriptive.
– v.coder
7 hours ago
add a comment |
Dd22qwGpoF,pS,T9OU BFpwxsmvEGxy4h,TRhvA6XvQqp4VOM
1
FYI, if you google "python group identical elements" or something similar you'll find plenty of recipes that would help you get started.
– Aran-Fey
15 hours ago