Pigna
Pigna

Reputation: 2924

python: why does replace not work?

I wrote a quick script to remove the 'http://' substring from a list of website addresses saved on an excel column. The function replace though, doesn't work and I don't understand why.

from openpyxl import load_workbook

def rem(string):
    print string.startswith("http://")    #it yields "True"
    string.replace("http://","")
    print string, type(string)    #checking if it works (it doesn't though, the output is the same as the input)

wb = load_workbook("prova.xlsx")
ws = wb["Sheet"]

for n in xrange(2,698):
    c = "B"+str(n)
    print ws[c].value, type(ws[c].value)   #just to check value and type (unicode)
    rem(str(ws[c].value))    #transformed to string in order to make replace() work

wb.save("prova.xlsx")    #nothing has changed

Upvotes: 2

Views: 25441

Answers (2)

Liam Schumm
Liam Schumm

Reputation: 117

string.replace(old, new[, max]) only returns a value—it does not modify string. For example,

>>> a = "123"
>>> a.replace("1", "4")
'423'
>>> a
'123'

You must re-assign the string to its modified value, like so:

>>> a = a.replace("1", "4")
>>> a
'423'

So in your case, you would want to instead write

string = string.replace("http://", "")

Upvotes: 6

Nick is tired
Nick is tired

Reputation: 7056

String.replace(substr)

does not happen in place, change it to:

string = string.replace("http://","")

Upvotes: 11

Related Questions