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..ed83e1a 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) has 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)
