1
votes

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
2
"doesn't work" isn't an explanation, you should describe the issue. What does happen? What have you tried to try to fix it? - Sayse

2 Answers

9
votes
String.replace(substr)

does not happen in place, change it to:

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

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://", "")