spliting on ":"

Steven D'Aprano steve at REMOVETHIScyber.com.au
Sat Mar 4 20:33:04 EST 2006


On Sat, 04 Mar 2006 08:54:33 -0800, s99999999s2003 wrote:

> hi
> 
> i have a file with
> 
> xxx.xxx.xxx.xxx:yyy
> xxx.xxx.xxx.xxx:yyy
> xxx.xxx.xxx.xxx:yyy
> xxx.xxx.xxx.xxx
> xxx.xxx.xxx.xxx
> xxx.xxx.xxx.xxx:yyy
> 
> i wanna split on ":" and get all the "yyy" and print the whole line out
> so i did
> 
> print line.split(":")[-1]
> 
> but line 4 and 5 are not printed as there is no ":" to split. It should
> print a "blank" at least.
> how to print out lines 4 and 5 ?
> eg output is
> 
> yyy
> yyy
> yyy
> 
> 
> yyy


There are a few ways of handling this problem. It depends on what you want
to do if your input string looks like this "abc:y:z": should your code
print "y", "z" or even "y:z"?

# look before you leap
line = "abc:y:z"
if ":" in line:
    print line.split(":")[-1]  # prints "z"
    print line.split(":")[1]  # prints "y"
    print line.split(":", 1)[-1]  # prints "y:z"
    # if your line only has one colon, the above three lines
    # should all print the same thing
else:
    print ""



# look before you leap again
L = line.split(":")
if len(L) > 1:
    print L[1]
else:
    print ""



# use a sentinel value
print (line + ":").split(":", 1)[1][:-1]


-- 
Steven.




More information about the Python-list mailing list