Expressing positive integers as the sum of different charming numbers
Your to_base_10(x) function may be easily rewritten as:

def to_base_10(base_3):
    return int(base_3, 3)


However, you are only using the function to convert base 3 numbers of the forms '1' followed by n zeros, and '12' followed by n zeros.  These can be directly computed as:


to_base_10('1' + '0'*n) -->  3 ** n
to_base_10('12' + '0'*n) --> 5 * 3**n




The output of the to_base_3(x) function is only used to produce 2 values: len(base_3_value) and digit = base_3_value[0].  These can also be directly computed.  

if number &gt; 0:
    len_base_3_value = int(math.log(number, 3)) + 1
    digit = number // (3 ** (len_base_3_value - 1))
else:
    len_base_3_value = 1
    digit = 0


Note: digit is now an int (0, 1, or 2), not a str ('0', '1', or '2')



You recursively call and then return the value of find_charming_components(number, charming_components).  Python does not do tail recursion optimization, so this should be replaced with a simple loop, instead of recursion.