Strange behaviour with a for loop.
Sean Murphy
mhysnm1964 at gmail.com
Sat Jan 4 01:32:44 EST 2014
Hi everyone.
Worked out what I was doing wrong with the string splicing. The offset number was lower then the index number, so it was failing. E.G:
On 04/01/2014, at 4:54 PM, Sean Murphy <mhysnm1964 at gmail.com> wrote:
> Thanks everyone.
>
> Mark thanks for the correction on the ':'. Since I didn't cut and copy, rather typed it out. Errors crept in. :-)
>
> another question in relation to slicing strings. If you want to get a single character, just using the index position will get it. If I use the following, shouldn't it also work? when I use Python 3.3, it didn't provide anything.
>
> a = "test.txt"
> print a[3]
>
print a[4:1] <--- index is 4 and offset is one. This is invalid.
So I suspect the offset number still starts at the beginning of the string and counts forward or another way to look at it you are slicing from element x to element y. If element y is less then element x, return nothing. Does this make sense?
I should have used:
print a[4:6])
to get:
t.t
The 2nd part of my original question still stands. I will expand upon this a bit more to give more context. I want to print from the beginning of the paragraph to the end. Each paragraph ends with "\n\n\n".
If I use "\n\n\n" in lines this does return true for the string. But I don't have a starting position and ending position. The list method which I mention before can be sliced by going back one element.
Any suggestion on this would be welcomed. I want to achieve this using standard core python objects/methods.
Sean
> result is:
>
> 't
>
>
> print a[3:1]
>
> Nothing is printed.
>
> print a[3:2]
>
>
> Nothing is printed.
>
> print a[3:-1]
>
> t.tx is printed.
>
>
> Why doesn't the positive number of characters to be splice return anything while the negative value does?
>
> sorry about these basic questions. I do like the splice feature within Python. Also what is the best method of testing for a blank string?
>
> end of paragraph line 1
>
>
> new paragraph of line 1.
>
>
> The above example text is what I want to test for. I am planning to either load the whole file in as a single chunk of memory using fp.read() or store it into an array by using fp.readlines(). The first option I see being useful because you can create a regular expression to test for multiple '\n'. While in an array (list) I would have to test for a blank line which I assume would be "".
>
> Any suggestions on this would be welcomed.
>
> Sean
>
>
>
> print a[
>
> On 04/01/2014, at 4:38 PM, Mark Lawrence <breamoreboy at yahoo.co.uk> wrote:
>
>> On 04/01/2014 04:03, Sean Murphy wrote:
>>> Hello all.
>>>
>>> This is a newly question. But I wish to understand why the below code is providing different results.
>>>
>>> import os, sys
>>>
>>>
>>> if len(sys.argv) > 2:
>>> filenames = sys.argv[1:]
>>> else
>>> print ("no parameters provided\n")
>>> sys.edit()
>>>
>>> for filename in filenames:
>>> print ("filename is: %s\n" %filename)
>>>
>>> The above code will return results like:
>>>
>>> filename is test.txt
>>>
>>> If I modify the above script slightly as shown below, I get a completely different result.
>>>
>>> if len(sys.argv) > 2:
>>> filenames = sys.argv[1]
>>> else
>>> print ("no parameters provided\n")
>>> sys.exit()
>>>
>>> for filename in filenames:
>>> print ("filename is: %s\n" % filename)
>>>
>>> The result is the filename is spelled out a character at a time. The bit I am missing is something to do with splicing or referencing in Python.
>>>
>>> Why am I getting different results? In other languages I would have got the whole content of the element when using the index of the array (list).
>>>
>>>
>>> Sean
>>> filename is: t
>>> filename
>>>
>>
>> As you've already had answers I'd like to point out that your test for len(sys.argv) is wrong, else is missing a colon and sys.edit() is very unlikely to work :)
>>
>> --
>> My fellow Pythonistas, ask not what our language can do for you, ask what you can do for our language.
>>
>> Mark Lawrence
>>
>> --
>> https://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list