Why slightly closing your eyes let you see the rainbow colors?
My theory would be that your eyelids, like windscreen wiper, wipe away some of the exes water on your eyeball. Due to adhesion between the water and the eyelids the surface of this water is slightly curved near the eyelids and if the eyelids are close enough near each other this surface basically acts as a concave lens, which I tried to demonstrate in the following image:
I also tried to verify this theory by basically making myself cry (don't worry, I did not hurt myself for this or anything, I get watery eyes when I yawn). Now by looking close over my bottom eyelid, while keeping my eye open, I only noticed the bottom beam of light, because only the bottom half of the "concave lens" is in my peripheral vision. Without crying it is visible as well but less obvious.
I do not really see a rainbow very clearly in those beams, but water does has different index of refraction for visible light, also because this is also what causes rainbows to form in the first place.
Well, here's my first answer on Stack Exchange!
All light, not just visible light which we see, consists of many different electromagnetic waves. These are all part of the electromagnetic spectrum.
The "color" of the light we see is defined by the wave's wavelength.
http://science.csustan.edu/chem1112_4/beers%20law/beers%20law081.htm
Here is a continuous spectrum - it contains all the different wavelengths of the visible spectrum, producing a white light.
The light can be diffracted (split) into its individual wavelengths and this is exactly what happens when light is shined at a prism, crystal, water vapor (such as in a rainbow), diffraction gratings or, in your example, an almost closed eye. http://blogayac.wordpress.com/2013/01/29/prism-white-light-gif/
When your eye is almost closed the eyelids form a small "aperture", or thin gap for the light to pass though (Bio people, please correct me if that was wrong). The eyeball causes the thin line of light to be split into its individual wavelengths, and the light is in essence split to different parts of your retina and not as a continuous mix and a single color as you'd normally see it. This lets you see it in a way that reveals its separate wavelengths.
Since you say the street lamp produces a white light, it is most likely a Mercury-Vapour lamp. This is a gas-discharge tube which produces light by exciting Mercury Vapor.
Here is the emission spectrum of Mercury: http://www.a-levelphysicstutor.com/wav-em-waves.php
Note that it does not produce all wavelengths in the visible spectrum, but your eyes won't see it in such detail as it'll be rather blurred - you'll need a spectrometer to view it in more detail.
I doubt the street lamp uses and Incandescent light bulb, but if it did you'd see a near continuous spectra like the top image.
By the way, a phosphor coating is sometimes put over Mercury-Vapor lamps as it gives a better color temperature which makes it look more natural and white, so the spectrum probably looks more complete with that on. If the street lamp you saw was Mercury-Vapor then it was probably coated.
I'm not sure if my explanation of light diffraction in the eye is correct. It could bd moisture, but I would appreciate the input if someone knows for sure. Also other corrections in general, too. Thanks!