diff --git a/Doc/library/exceptions.rst b/Doc/library/exceptions.rst
index feeeffd..17a0fed 100644
--- a/Doc/library/exceptions.rst
+++ b/Doc/library/exceptions.rst
@@ -52,7 +52,7 @@
 
    The base class for all built-in exceptions.  It is not meant to be directly
    inherited by user-defined classes (for that use :exc:`Exception`).  If
-   :func:`str` or :func:`unicode` is called on an instance of this class, the
+   :func:`bytes` or :func:`str` is called on an instance of this class, the
    representation of the argument(s) to the instance are returned or the empty
    string when there were no arguments.  All arguments are  stored in :attr:`args`
    as a tuple.
diff --git a/Doc/library/json.rst b/Doc/library/json.rst
index e220e7b..6ad95b2 100644
--- a/Doc/library/json.rst
+++ b/Doc/library/json.rst
@@ -118,7 +118,7 @@
    file-like object).
 
    If *skipkeys* is ``True`` (default: ``False``), then dict keys that are not
-   of a basic type (:class:`str`, :class:`unicode`, :class:`int`,
+   of a basic type (:class:`bytes`, :class:`str`, :class:`int`,
    :class:`float`, :class:`bool`, ``None``) will be skipped instead of raising a
    :exc:`TypeError`.
 
@@ -201,13 +201,13 @@
 
 .. function:: loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
 
-   Deserialize *s* (a :class:`str` or :class:`unicode` instance containing a JSON
+   Deserialize *s* (a :class:`bytes` or :class:`str` instance containing a JSON
    document) to a Python object.
 
-   If *s* is a :class:`str` instance and is encoded with an ASCII based encoding
+   If *s* is a :class:`bytes` instance and is encoded with an ASCII based encoding
    other than UTF-8 (e.g. latin-1), then an appropriate *encoding* name must be
    specified.  Encodings that are not ASCII based (such as UCS-2) are not
-   allowed and should be decoded to :class:`unicode` first.
+   allowed and should be decoded to :class:`str` first.
 
    The other arguments have the same meaning as in :func:`dump`.
 
diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst
index 1898132..314cd2d 100644
--- a/Doc/library/multiprocessing.rst
+++ b/Doc/library/multiprocessing.rst
@@ -77,14 +77,14 @@
     import os
 
     def info(title):
-        print title
-        print 'module name:', __name__
-        print 'parent process:', os.getppid()
-        print 'process id:', os.getpid()
+        print(title)
+        print('module name:', __name__)
+        print('parent process:', os.getppid())
+        print('process id:', os.getpid())
 
     def f(name):
         info('function f')
-        print 'hello', name
+        print('hello', name)
 
     if __name__ == '__main__':
         info('main line')
@@ -279,10 +279,10 @@
        return x*x
 
    if __name__ == '__main__':
-       pool = Pool(processes=4)              # start 4 worker processes
+       pool = Pool(processes=4)               # start 4 worker processes
        result = pool.apply_async(f, [10])     # evaluate "f(10)" asynchronously
-       print result.get(timeout=1)           # prints "100" unless your computer is *very* slow
-       print pool.map(f, range(10))          # prints "[0, 1, 4,..., 81]"
+       print(result.get(timeout=1))           # prints "100" unless your computer is *very* slow
+       print(pool.map(f, range(10)))          # prints "[0, 1, 4,..., 81]"
 
 
 Reference
diff --git a/Doc/library/plistlib.rst b/Doc/library/plistlib.rst
index cf3dd82..55b84e0 100644
--- a/Doc/library/plistlib.rst
+++ b/Doc/library/plistlib.rst
@@ -20,7 +20,7 @@
 
 Values can be strings, integers, floats, booleans, tuples, lists, dictionaries
 (but only with string keys), :class:`Data` or :class:`datetime.datetime`
-objects.  String values (including dictionary keys) may be unicode strings --
+objects.  String values (including dictionary keys) have to be unicode strings --
 they will be written out as UTF-8.
 
 The ``<data>`` plist type is supported through the :class:`Data` class.  This is
@@ -83,22 +83,20 @@
 Generating a plist::
 
     pl = dict(
-        aString="Doodah",
-        aList=["A", "B", 12, 32.1, [1, 2, 3]],
+        aString = "Doodah",
+        aList = ["A", "B", 12, 32.1, [1, 2, 3]],
         aFloat = 0.1,
         anInt = 728,
-        aDict=dict(
-            anotherString="<hello & hi there!>",
-            aUnicodeValue=u'M\xe4ssig, Ma\xdf',
-            aTrueValue=True,
-            aFalseValue=False,
+        aDict = dict(
+            anotherString = "<hello & hi there!>",
+            aThirdString = "M\xe4ssig, Ma\xdf",
+            aTrueValue = True,
+            aFalseValue = False,
         ),
         someData = Data("<binary gunk>"),
         someMoreData = Data("<lots of binary gunk>" * 10),
         aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())),
     )
-    # unicode keys are possible, but a little awkward to use:
-    pl[u'\xc5benraa'] = "That was a unicode key."
     writePlist(pl, fileName)
 
 Parsing a plist::
diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
index 928a262..1f30a61 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -311,12 +311,12 @@
    name-value pairs::
 
       {'notAfter': 'Feb 16 16:54:50 2013 GMT',
-       'subject': ((('countryName', u'US'),),
-                   (('stateOrProvinceName', u'Delaware'),),
-                   (('localityName', u'Wilmington'),),
-                   (('organizationName', u'Python Software Foundation'),),
-                   (('organizationalUnitName', u'SSL'),),
-                   (('commonName', u'somemachine.python.org'),))}
+       'subject': ((('countryName', 'US'),),
+                   (('stateOrProvinceName', 'Delaware'),),
+                   (('localityName', 'Wilmington'),),
+                   (('organizationName', 'Python Software Foundation'),),
+                   (('organizationalUnitName', 'SSL'),),
+                   (('commonName', 'somemachine.python.org'),))}
 
    If the ``binary_form`` parameter is :const:`True`, and a
    certificate was provided, this method returns the DER-encoded form
@@ -522,20 +522,20 @@
 looked like this::
 
       {'notAfter': 'May  8 23:59:59 2009 GMT',
-       'subject': ((('serialNumber', u'2497886'),),
-                   (('1.3.6.1.4.1.311.60.2.1.3', u'US'),),
-                   (('1.3.6.1.4.1.311.60.2.1.2', u'Delaware'),),
-                   (('countryName', u'US'),),
-                   (('postalCode', u'94043'),),
-                   (('stateOrProvinceName', u'California'),),
-                   (('localityName', u'Mountain View'),),
-                   (('streetAddress', u'487 East Middlefield Road'),),
-                   (('organizationName', u'VeriSign, Inc.'),),
+       'subject': ((('serialNumber', '2497886'),),
+                   (('1.3.6.1.4.1.311.60.2.1.3', 'US'),),
+                   (('1.3.6.1.4.1.311.60.2.1.2', 'Delaware'),),
+                   (('countryName', 'US'),),
+                   (('postalCode', '94043'),),
+                   (('stateOrProvinceName', 'California'),),
+                   (('localityName', 'Mountain View'),),
+                   (('streetAddress', '487 East Middlefield Road'),),
+                   (('organizationName', 'VeriSign, Inc.'),),
                    (('organizationalUnitName',
-                     u'Production Security Services'),),
+                     'Production Security Services'),),
                    (('organizationalUnitName',
-                     u'Terms of use at www.verisign.com/rpa (c)06'),),
-                   (('commonName', u'www.verisign.com'),))}
+                     'Terms of use at www.verisign.com/rpa (c)06'),),
+                   (('commonName', 'www.verisign.com'),))}
 
 which is a fairly poorly-formed ``subject`` field.
 
diff --git a/Doc/library/subprocess.rst b/Doc/library/subprocess.rst
index 2af5489..4c4a56a 100644
--- a/Doc/library/subprocess.rst
+++ b/Doc/library/subprocess.rst
@@ -510,13 +510,13 @@
    ...
    rc = pipe.close()
    if  rc != None and rc % 256:
-       print "There were some errors"
+       print("There were some errors")
    ==>
    process = Popen(cmd, 'w', stdin=PIPE)
    ...
    process.stdin.close()
    if process.wait() != 0:
-       print "There were some errors"
+       print("There were some errors")
 
 
 Replacing functions from the :mod:`popen2` module
diff --git a/Doc/library/tkinter.ttk.rst b/Doc/library/tkinter.ttk.rst
index 3390d13..4b83794 100644
--- a/Doc/library/tkinter.ttk.rst
+++ b/Doc/library/tkinter.ttk.rst
@@ -1228,7 +1228,7 @@
 
          from tkinter import ttk
 
-         print ttk.Style().lookup("TButton", "font")
+         print(ttk.Style().lookup("TButton", "font"))
 
 
    .. method:: layout(style[, layoutspec=None])
diff --git a/Doc/library/turtle.rst b/Doc/library/turtle.rst
index b7f2853..d70550a 100644
--- a/Doc/library/turtle.rst
+++ b/Doc/library/turtle.rst
@@ -645,7 +645,7 @@
       >>> turtle.forward(100)
       >>> turtle.pos()
       (64.28,76.60)
-      >>> print turtle.xcor()
+      >>> print(turtle.xcor())
       64.2787609687
 
 
@@ -658,9 +658,9 @@
       >>> turtle.home()
       >>> turtle.left(60)
       >>> turtle.forward(100)
-      >>> print turtle.pos()
+      >>> print(turtle.pos())
       (50.00,86.60)
-      >>> print turtle.ycor()
+      >>> print(turtle.ycor())
       86.6025403784
 
 
diff --git a/Doc/library/unicodedata.rst b/Doc/library/unicodedata.rst
index d8428a5..2358285 100644
--- a/Doc/library/unicodedata.rst
+++ b/Doc/library/unicodedata.rst
@@ -146,7 +146,7 @@
 
    >>> import unicodedata
    >>> unicodedata.lookup('LEFT CURLY BRACKET')
-   u'{'
+   '{'
    >>> unicodedata.name('/')
    'SOLIDUS'
    >>> unicodedata.decimal('9')
diff --git a/Doc/library/winreg.rst b/Doc/library/winreg.rst
index f048067..ad46bc3 100644
--- a/Doc/library/winreg.rst
+++ b/Doc/library/winreg.rst
@@ -130,12 +130,12 @@
    +-------+--------------------------------------------+
 
 
-.. function:: ExpandEnvironmentStrings(unicode)
+.. function:: ExpandEnvironmentStrings(str)
 
-   Expands environment strings %NAME% in unicode string like const:`REG_EXPAND_SZ`::
+   Expands environment strings %NAME% in unicode string like :const:`REG_EXPAND_SZ`::
 
-      >>> ExpandEnvironmentStrings(u"%windir%")
-      u"C:\\Windows"
+      >>> ExpandEnvironmentStrings('%windir%')
+      'C:\\Windows'
 
 
 .. function:: FlushKey(key)
