Strange behaviour with a for loop.

Sean Murphy mhysnm1964 at gmail.com
Sat Jan 4 00:54:42 EST 2014


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]

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