Reputation: 2924
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
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
Reputation: 7056
String.replace(substr)
does not happen in place, change it to:
string = string.replace("http://","")
Upvotes: 11