On Tuesday, June 4, 2013 11:48:55 AM UTC-4, MRAB wrote: > On 04/06/2013 16:21, mstagliamonte wrote: > > > Hi everyone, > > > > > > I am a beginner in python and trying to find my way through... :) > > > > > > I am writing a script to get numbers from the headers of a text file. > > > > > > If the header is something like: > > > h01 = ('>scaffold_1') > > > I just use: > > > h01.lstrip('>scaffold_') > > > and this returns me '1' > > > > > > But, if the header is: > > > h02: ('>contig-100_0') > > > if I use: > > > h02.lstrip('>contig-100_') > > > this returns me with: '' > > > ...basically nothing. What surprises me is that if I do in this other way: > > > h02b = h02.lstrip('>contig-100') > > > I get h02b = ('_1') > > > and subsequently: > > > h02b.lstrip('_') > > > returns me with: '1' which is what I wanted! > > > > > > Why is this happening? What am I missing? > > > > > The methods 'lstrip', 'rstrip' and 'strip' don't strip a string, they > > strip characters. > > > > You should think of the argument as a set of characters to be removed. > > > > This code: > > > > h01.lstrip('>scaffold_') > > > > will return the result of stripping the characters '>', '_', 'a', 'c', > > 'd', 'f', 'l', 'o' and 's' from the left-hand end of h01. > > > > A simpler example: > > > > >>> 'xyyxyabc'.lstrip('xy') > > 'abc' > > > > It strips the characters 'x' and 'y' from the string, not the string > > 'xy' as such. > > > > They are that way because they have been in Python for a long time, > > long before sets and such like were added to the language.
Hey, Great! Now I understand! So, basically, it is also stripping the numbers after the '_' !! Thank you, I know a bit more now! Have a nice day everyone :) Max -- http://mail.python.org/mailman/listinfo/python-list