python: why does replace not work?

倾然丶 夕夏残阳落幕 提交于 2020-05-24 04:47:10

问题


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

回答1:


String.replace(substr)

does not happen in place, change it to:

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



回答2:


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


来源:https://stackoverflow.com/questions/41614323/python-why-does-replace-not-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!