separar - substring em python




Conte as ocorrências numéricas de um caractere em uma string (12)

Qual é a maneira mais simples de contar o número de ocorrências de um caractere em uma string?

por exemplo, conte o número de vezes que 'a' aparece em 'Mary had a little lamb'


str.count (sub [, start [, end]])

Retorna o número de ocorrências não sobrepostas de substring sub no intervalo [start, end] . Os argumentos opcionais start e end são interpretados como notação de fatia.

>>> sentence = 'Mary had a little lamb'
>>> sentence.count('a')
4

"Sem usar a contagem para encontrar o caractere em string".

import re

def count(s, ch):

   pass

def main():

   s = raw_input ("Enter strings what you like, for example, 'welcome': ")  

   ch = raw_input ("Enter you want count characters, but best result to find one character: " )

   print ( len (re.findall ( ch, s ) ) )

main()

Esta função fácil e direta pode ajudar:

def check_freq(str):
    freq = {}
    for c in str:
       freq[c] = str.count(c)
    return freq

check_freq("abbabcbdbabdbdbabababcbcbab")
{'a': 7, 'b': 14, 'c': 3, 'd': 3}

Expressões regulares são muito úteis se você quiser insensibilidade a maiúsculas e minúsculas (e, claro, todo o poder de regex).

my_string = "Mary had a little lamb"
# simplest solution, using count, is case-sensitive
my_string.count("m")   # yields 1
import re
# case-sensitive with regex
len(re.findall("m", my_string))
# three ways to get case insensitivity - all yield 2
len(re.findall("(?i)m", my_string))
len(re.findall("m|M", my_string))
len(re.findall(re.compile("m",re.IGNORECASE), my_string))

Esteja ciente de que a versão regex leva cerca de dez vezes mais tempo para ser executada, o que provavelmente será um problema apenas se my_string for tremendamente longo ou se o código estiver dentro de um loop profundo.


Isso lhe dará a ocorrência de cada caractere em uma string. O / P também está no formato de string:

def count_char(string1):
string2=""
lst=[]
lst1=[]
for i in string1:
    count=0
    if i not in lst:
        for j in string1:
            if i==j:
                count+=1
        lst1.append(i)
        lst1.append(count)
    lst.append(i)

string2=''.join(str(x) for x in lst1)
return string2 

print count_char("aabbacddaabbdsrchhdsdg")

Não mais do que isso IMHO - você pode adicionar os métodos superiores ou inferiores

def count_letter_in_str(string,letter):
    return string.count(letter)

Você pode usar count() :

>>> 'Mary had a little lamb'.count('a')
4

str.count(a) é a melhor solução para contar um único caractere em uma string. Mas se você precisar contar mais caracteres, você terá que ler a string inteira quantas vezes quiser.

Uma abordagem melhor para esse trabalho seria:

from collections import defaultdict

text = 'Mary had a little lamb'
chars = defaultdict(int)

for char in text:
    chars[char] += 1

Então você terá um dict que retorna o número de ocorrências de cada letra na string e 0 se não estiver presente.

>>>chars['a']
4
>>>chars['x']
0

Para um contador insensível a maiúsculas e minúsculas, você pode substituir os métodos defaultdict e accessor pela subclasse de defaultdict (os da classe base 'são somente leitura):

class CICounter(defaultdict):
    def __getitem__(self, k):
        return super().__getitem__(k.lower())

    def __setitem__(self, k, v):
        super().__setitem__(k.lower(), v)


chars = CICounter(int)

for char in text:
    chars[char] += 1

>>>chars['a']
4
>>>chars['M']
2
>>>chars['x']
0

a = 'have a nice day'
symbol = 'abcdefghijklmnopqrstuvwxyz'
for key in symbol:
    print key, a.count(key)

myString.count('a');

mais informações here


str = "count a character occurance"

List = list(str)
print (List)
Uniq = set(List)
print (Uniq)

for key in Uniq:
    print (key, str.count(key))

"aabc".count("a")




count