Why am I getting "AttributeError: 'module' object has no attribute 'replace'" on string.replace()

22,576

Solution 1

Methods in the string module have been deprecated for years. You should call replace directly on your string, or contri[6].

Solution 2

It is now on str.replace on Python 3.

Looks like the same thing renamed, have the same signature and a docstring with the same meaning.

Share:
22,576
Jeff
Author by

Jeff

Updated on July 12, 2022

Comments

  • Jeff
    Jeff almost 2 years

    The line causing the error is

    totalR = totalR + (float(string.replace(contri[0][5],",","")) + float(string.replace(contri[0][6],",","")))
    

    contri[0][5] and [6] are strings that contain numbers formatted as 1,000.00. I'm removing the commas before I cast the strings as floats in order to add them to totalR, which is a float. (Created as totalR = 0.0) I also tried using Decimal, but the error happened there too. I did "import string". The program fails with error:

    File "mine.py", line 43, in fillDonorData
    totalR = totalR + (float(string.replace(contri[0][5],",","")) + float(string.replace(contri[0][6],",","")))
    AttributeError: 'module' object has no attribute 'replace'
    
  • abarnert
    abarnert over 10 years
    In 2.x, the Deprecated string functions still work despite being deprecated. In 3.x, most of them (including replace) no longer exist. However, there are still plenty of non-deprecated functions, constants, and classes in string.
  • Zizouz212
    Zizouz212 almost 9 years
    string is a builtin module. But this is correct, you would have to reload if changes are made.