Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Counting consecutive characters in a string

I need to write a code that slices the string (which is an input), append it to a list, count the number of each letter - and if it is identical to the letter before it, don't put it in the list, but rather increase the appearance number of that letter in the one before.. Well this is how it should look like :

assassin [['a', 1], ['s', 2], ['a', 1], ['s', 2]], ['i', 1], ['n', 1]

the word assassin is just an example of the need.. My code so far goes like this:

userin = raw_input("Please enter a string :")
inputlist = []
inputlist.append(userin)
biglist = []
i=0
count = {}
while i<(len(userin)):
    slicer = inputlist[0][i]
    for s in userin:
        if count.has_key(s):
            count[s] += 1
        else:
            count[s] = 1
    biglist.append([slicer,s])
    i = i+1
print biglist 

Thanks!

like image 330
Spectalecy Avatar asked Nov 02 '12 14:11

Spectalecy


People also ask

How do you count consecutive characters in a string in python?

groupby() to Count Consecutive Occurrences in Python.

How do you count non repeated characters in a string?

Non repeating characters are those that are present in the string only once. To find non repeating characters in a string we will use one for loop to calculate the frequency of each character and print those characters that have frequency count one using another for loop.


1 Answers

Use Collections.Counter(), dictionary is a better way to store this:

>>> from collections import Counter
>>> strs="assassin"
>>> Counter(strs)
Counter({'s': 4, 'a': 2, 'i': 1, 'n': 1})

or using itertools.groupby():

>>> [[k, len(list(g))] for k, g in groupby(strs)]
[['a', 1], ['s', 2], ['a', 1], ['s', 2], ['i', 1], ['n', 1]]
like image 166
Ashwini Chaudhary Avatar answered Sep 28 '22 05:09

Ashwini Chaudhary