diff --git a/Lib/SimpleHTTPServer.py b/Lib/SimpleHTTPServer.py
index 9c87e66..01a6097 100644
--- a/Lib/SimpleHTTPServer.py
+++ b/Lib/SimpleHTTPServer.py
@@ -11,7 +11,6 @@
 __all__ = ["SimpleHTTPRequestHandler"]
 
 import os
-import string
 import posixpath
 import BaseHTTPServer
 import urllib
@@ -131,7 +130,7 @@
 
         """
         path = posixpath.normpath(urllib.unquote(path))
-        words = string.splitfields(path, '/')
+        words = path.splitfields('/')
         words = filter(None, words)
         path = os.getcwd()
         for word in words:
@@ -175,7 +174,7 @@
         base, ext = posixpath.splitext(path)
         if self.extensions_map.has_key(ext):
             return self.extensions_map[ext]
-        ext = string.lower(ext)
+        ext = ext.lower()
         if self.extensions_map.has_key(ext):
             return self.extensions_map[ext]
         else:
diff --git a/Lib/ihooks.py b/Lib/ihooks.py
index 9e1e8842..cf02538 100644
--- a/Lib/ihooks.py
+++ b/Lib/ihooks.py
@@ -55,7 +55,6 @@
 import imp
 import os
 import sys
-import string
 
 __all__ = ["BasicModuleLoader","Hooks","ModuleLoader","FancyModuleLoader",
            "BasicModuleImporter","ModuleImporter","install","uninstall"]
@@ -412,7 +411,7 @@
             assert globals is parent.__dict__
             return parent
         if '.' in pname:
-            i = string.rfind(pname, '.')
+            i = pname.rfind('.')
             pname = pname[:i]
             parent = self.modules[pname]
             assert parent.__name__ == pname
@@ -421,7 +420,7 @@
 
     def find_head_package(self, parent, name):
         if '.' in name:
-            i = string.find(name, '.')
+            i = name.find('.')
             head = name[:i]
             tail = name[i+1:]
         else:
@@ -443,7 +442,7 @@
     def load_tail(self, q, tail):
         m = q
         while tail:
-            i = string.find(tail, '.')
+            i = tail.find('.')
             if i < 0: i = len(tail)
             head, tail = tail[:i], tail[i+1:]
             mname = "%s.%s" % (m.__name__, head)
@@ -493,7 +492,7 @@
         name = module.__name__
         if '.' not in name:
             return self.import_it(name, name, None, force_load=1)
-        i = string.rfind(name, '.')
+        i = name.rfind('.')
         pname = name[:i]
         parent = self.modules[pname]
         return self.import_it(name[i+1:], name, parent, force_load=1)
