Correct “an” → “a” with “Unicode”, “user”, “UTF”, etc

This affects documentation and code comments.
diff --git a/Lib/heapq.py b/Lib/heapq.py
index 4b2c0c4..f8269e1 100644
--- a/Lib/heapq.py
+++ b/Lib/heapq.py
@@ -56,7 +56,7 @@
 
 
 In the tree above, each cell `k' is topping `2*k+1' and `2*k+2'.  In
-an usual binary tournament we see in sports, each cell is the winner
+a usual binary tournament we see in sports, each cell is the winner
 over the two cells it tops, and we can trace the winner down the tree
 to see all opponents s/he had.  However, in many computer applications
 of such tournaments, we do not need to trace the history of a winner.
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index 58951b9..0b85b0b 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -141,7 +141,7 @@
     Return a 2-tuple (unc, rest); either part may be empty.
     If unc is not empty, it has the form '//host/mount' (or similar
     using backslashes).  unc+rest is always the input path.
-    Paths containing drive letters never have an UNC part.
+    Paths containing drive letters never have a UNC part.
     """
     if p[1:2] == ':':
         return '', p # Drive letter present
@@ -227,7 +227,7 @@
 lexists = exists
 
 # Is a path a mount point?  Either a root (with or without drive letter)
-# or an UNC path with at most a / or \ after the mount point.
+# or a UNC path with at most a / or \ after the mount point.
 
 def ismount(path):
     """Test whether a path is a mount point (defined as root of drive)"""
diff --git a/Lib/os2emxpath.py b/Lib/os2emxpath.py
index 0b32d63..6691b7d 100644
--- a/Lib/os2emxpath.py
+++ b/Lib/os2emxpath.py
@@ -62,7 +62,7 @@
     Return a 2-tuple (unc, rest); either part may be empty.
     If unc is not empty, it has the form '//host/mount' (or similar
     using backslashes).  unc+rest is always the input path.
-    Paths containing drive letters never have an UNC part.
+    Paths containing drive letters never have a UNC part.
     """
     if p[1:2] == ':':
         return '', p # Drive letter present
@@ -105,7 +105,7 @@
 # Is a path a directory?
 
 # Is a path a mount point?  Either a root (with or without drive letter)
-# or an UNC path with at most a / or \ after the mount point.
+# or a UNC path with at most a / or \ after the mount point.
 
 def ismount(path):
     """Test whether a path is a mount point (defined as root of drive)"""
diff --git a/Lib/test/test_print.py b/Lib/test/test_print.py
index b726347..e8d9e66 100644
--- a/Lib/test/test_print.py
+++ b/Lib/test/test_print.py
@@ -107,7 +107,7 @@
         self.assertRaises(AttributeError, print, '', file='')
 
     def test_mixed_args(self):
-        # If an unicode arg is passed, sep and end should be unicode, too.
+        # If a unicode arg is passed, sep and end should be unicode, too.
         class Recorder(object):
 
             def __init__(self, must_be_unicode):
diff --git a/Lib/test/test_zlib.py b/Lib/test/test_zlib.py
index c8fc985..cc13409 100644
--- a/Lib/test/test_zlib.py
+++ b/Lib/test/test_zlib.py
@@ -150,7 +150,7 @@
         self.assertEqual(zlib.decompress(x), data)
 
     def test_incomplete_stream(self):
-        # An useful error message is given
+        # A useful error message is given
         x = zlib.compress(HAMLET_SCENE)
         self.assertRaisesRegexp(zlib.error,
             "Error -5 while decompressing data: incomplete or truncated stream",
diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py
index c6e3d39..cf6402f 100644
--- a/Lib/xml/etree/ElementTree.py
+++ b/Lib/xml/etree/ElementTree.py
@@ -574,7 +574,7 @@
 # @param text A string containing the QName value, in the form {uri}local,
 #     or, if the tag argument is given, the URI part of a QName.
 # @param tag Optional tag.  If given, the first argument is interpreted as
-#     an URI, and this argument is interpreted as a local name.
+#     a URI, and this argument is interpreted as a local name.
 # @return An opaque object, representing the QName.
 
 class QName(object):