python - Can someone explain why replace isn't working for me -
i need remove spaces in sentences. sentence "i like python" , need make "i python". used replace this:
>>> >>> sentence="i python" >>> def checkio(element): newelement=element.replace(" ", " ") , element.replace(" ", " ") return newelement >>> checkio(sentence) 'i python' >>> and see, result "i like python" though (think) told replace " " " ". can clear me why didn't work?
this wanted do:
def checkio(element): newelement = element.replace(" ", " ").replace(" ", " ") return newelement you shorten
def checkio(element): return element.replace(" ", " ").replace(" ", " ") however, if wanted replace arbitrary number of spaces? better split sentence on number of spaces, , join single space. this, use
def checkio(element): return " ".join(element.split()) the split method takes string , separates list. no argument, separates on spaces:
>>> "i python".split() ["i", "like", "python"] the join method takes list , makes string out of it, using string in between elements of list:
>>> ' '.join(["i", "like", "python"]) "i python" >>> '__help__'.join(["i", "like", "python"]) "i__help__like__help__python" why original attempt failed
the line
newelement = element.replace(" ", " ") , element.replace(" ", " ") was not doing expect because using "truthiness" of strings. and operator looks @ logical things. in python, strings except "" considered true. can use called "short-circuiting", did.
when use and, both left , right statement must true evaluate true. if left part false, there no reason move on right part , evaluation stops there (aka "short-circuiting"). if true, needs check right side see if whole statement true. can exploit fact return left statement if false, or right if left true:
>>> = "a" , "b" >>> "b" >>> = "" , "b" >>> "" >>> # works oppositely "or" >>> = "a" or "b" >>> "a" >>> = "" or "b" >>> "b" element.replace(" ", " ") returns string, , element.replace(" ", " "). since strings evaluate true, ever returning right statement of and.
this not common use of logical operatiors in python (it more used in other languages, though)
Comments
Post a Comment