Melhor maneira em Python para contar string em outra string

Esse código funciona, mas lendo as postagens aqui, tenho a impressão de que provavelmente não é uma solução muito "Pythonic". Existe uma maneira melhor e mais eficiente de resolver esse problema específico:

O que esse código faz: conta instâncias de uma sequência encontrada em outra e retorna a contagem. Isso gera um erro caso o usuário tente passar uma string vazia.

A versão do código que eu criei, mas me perguntando se existe uma maneira mais eficiente e mais "Pythonic" de fazer isso:

def count_string(raw_string, string_to_count):
    if len(string_to_count) == 0:
        raise ValueError("The length of string_to_count should not be 0!")
    else:
        str_count = 0
        string_to_count = string_to_count.lower()
        raw_string = raw_string.lower()
        if string_to_count not in raw_string:
            # this causes early exit if string not found at all
            return str_count
        else:
            while raw_string.find(string_to_count) != -1:
                indx = raw_string.find(string_to_count)
                str_count += 1
                raw_string = raw_string[(indx+1): ]
            return str_count

Este código foi escrito em Python 2.7, mas deve funcionar em 3.x.

questionAnswers(2)

yourAnswerToTheQuestion