diff --git a/Lib/cgitb.py b/Lib/cgitb.py
index 4e0c9fb..cd469ad 100644
--- a/Lib/cgitb.py
+++ b/Lib/cgitb.py
@@ -9,7 +9,7 @@
     display     - if true, tracebacks are displayed in the web browser
     logdir      - if set, tracebacks are written to files in this directory
     context     - number of lines of source code to show for each stack frame
-    format	- 'text' or 'html' controls the output format
+    format      - 'text' or 'html' controls the output format
 
 By default, tracebacks are displayed but not saved, the context is 5 lines
 and the output format is 'html' (for backwards compatibility with the
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 0391201..1f49bcb 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -325,7 +325,7 @@
         object = object.f_code
     if iscode(object):
         return object.co_filename
-    raise TypeError('arg is not a module, class, method, ' 
+    raise TypeError('arg is not a module, class, method, '
                     'function, traceback, frame, or code object')
 
 def getmoduleinfo(path):
diff --git a/Lib/test/test_bool.py b/Lib/test/test_bool.py
index f2a4322..33185a0 100644
--- a/Lib/test/test_bool.py
+++ b/Lib/test/test_bool.py
@@ -329,17 +329,17 @@
             def __nonzero__(self):
                 return self
         check(Foo())
-        
+
         class Bar(object):
             def __nonzero__(self):
                 return "Yes"
         check(Bar())
-        
+
         class Baz(int):
             def __nonzero__(self):
                 return self
         check(Baz())
-        
+
 
 def test_main():
     test_support.run_unittest(BoolTest)
diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py
index 0963bcc..ff1ce64 100644
--- a/Lib/test/test_complex.py
+++ b/Lib/test/test_complex.py
@@ -208,7 +208,7 @@
             self.assertRaises(ValueError, complex, unicode("x"))
 
         class EvilExc(Exception):
-             pass
+            pass
 
         class evilcomplex:
             def __complex__(self):
diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py
index 30551d8..37e9628 100644
--- a/Lib/test/test_posixpath.py
+++ b/Lib/test/test_posixpath.py
@@ -237,7 +237,7 @@
                     ),
                     True
                 )
-                # If we don't have links, assume that os.stat doesn't return resonable 
+                # If we don't have links, assume that os.stat doesn't return resonable
                 # inode information and thus, that samefile() doesn't work
                 if hasattr(os, "symlink"):
                     os.symlink(
@@ -288,7 +288,7 @@
                 ),
                 True
             )
-            # If we don't have links, assume that os.stat() doesn't return resonable 
+            # If we don't have links, assume that os.stat() doesn't return resonable
             # inode information and thus, that samefile() doesn't work
             if hasattr(os, "symlink"):
                 if hasattr(os, "symlink"):
