Remove functions in string module that are also string methods.  Also remove:
 * all calls to functions in the string module (except maketrans)
 * everything from stropmodule except for maketrans() which is still used
diff --git a/Lib/bsddb/dbrecio.py b/Lib/bsddb/dbrecio.py
index 975a2d9..cb2725c 100644
--- a/Lib/bsddb/dbrecio.py
+++ b/Lib/bsddb/dbrecio.py
@@ -29,7 +29,6 @@
 """
 
 import errno
-import string
 
 class DBRecIO:
     def __init__(self, db, key, txn=None):
@@ -83,9 +82,9 @@
         if self.closed:
             raise ValueError, "I/O operation on closed file"
         if self.buflist:
-            self.buf = self.buf + string.joinfields(self.buflist, '')
+            self.buf = self.buf + ''.join(self.buflist)
             self.buflist = []
-        i = string.find(self.buf, '\n', self.pos)
+        i = self.buf.find('\n', self.pos)
         if i < 0:
             newpos = self.len
         else:
@@ -134,7 +133,7 @@
         self.pos = newpos
 
     def writelines(self, list):
-        self.write(string.joinfields(list, ''))
+        self.write(''.join(list))
 
     def flush(self):
         if self.closed:
diff --git a/Lib/bsddb/test/test_associate.py b/Lib/bsddb/test/test_associate.py
index 857cd3d..d8c9c0c 100644
--- a/Lib/bsddb/test/test_associate.py
+++ b/Lib/bsddb/test/test_associate.py
@@ -2,7 +2,7 @@
 TestCases for DB.associate.
 """
 
-import sys, os, string
+import sys, os
 import tempfile
 import time
 from pprint import pprint
@@ -177,7 +177,7 @@
         for key, value in musicdata.items():
             if type(self.keytype) == type(''):
                 key = "%02d" % key
-            d.put(key, string.join(value, '|'), txn=txn)
+            d.put(key, '|'.join(value), txn=txn)
 
     def createDB(self, txn=None):
         self.cur = None
@@ -263,7 +263,7 @@
         rec = self.cur.first()
         while rec is not None:
             if type(self.keytype) == type(''):
-                assert string.atoi(rec[0])  # for primary db, key is a number
+                assert int(rec[0])  # for primary db, key is a number
             else:
                 assert rec[0] and type(rec[0]) == type(0)
             count = count + 1
@@ -305,7 +305,7 @@
         assert type(priData) == type("")
         if verbose:
             print('getGenre key: %r data: %r' % (priKey, priData))
-        genre = string.split(priData, '|')[2]
+        genre = priData.split('|')[2]
         if genre == 'Blues':
             return db.DB_DONOTINDEX
         else:
@@ -427,13 +427,13 @@
         for key, value in musicdata.items():
             if type(self.keytype) == type(''):
                 key = "%02d" % key
-            d.put(key, string.join(value, '|'))
+            d.put(key, '|'.join(value))
 
     def writer2(self, d):
         for x in range(100, 600):
             key = 'z%2d' % x
             value = [key] * 4
-            d.put(key, string.join(value, '|'))
+            d.put(key, '|'.join(value))
 
 
 class ThreadedAssociateHashTestCase(ShelveAssociateTestCase):
diff --git a/Lib/bsddb/test/test_compat.py b/Lib/bsddb/test/test_compat.py
index 7561f9f..2908844 100644
--- a/Lib/bsddb/test/test_compat.py
+++ b/Lib/bsddb/test/test_compat.py
@@ -3,7 +3,7 @@
 regression test suite.
 """
 
-import sys, os, string
+import sys, os
 import unittest
 import tempfile
 
@@ -35,7 +35,7 @@
         self.do_bthash_test(hashopen, 'hashopen')
 
     def test03_rnopen(self):
-        data = string.split("The quick brown fox jumped over the lazy dog.")
+        data = "The quick brown fox jumped over the lazy dog.".split()
         if verbose:
             print("\nTesting: rnopen")
 
diff --git a/Lib/bsddb/test/test_dbobj.py b/Lib/bsddb/test/test_dbobj.py
index b15de2f..27fffe0 100644
--- a/Lib/bsddb/test/test_dbobj.py
+++ b/Lib/bsddb/test/test_dbobj.py
@@ -1,5 +1,5 @@
 
-import sys, os, string
+import sys, os
 import unittest
 import glob
 import tempfile
@@ -38,7 +38,7 @@
         class TestDBEnv(dbobj.DBEnv): pass
         class TestDB(dbobj.DB):
             def put(self, key, *args, **kwargs):
-                key = string.upper(key)
+                key = key.upper()
                 # call our parent classes put method with an upper case key
                 return dbobj.DB.put(self, key, *args, **kwargs)
         self.env = TestDBEnv()
diff --git a/Lib/bsddb/test/test_join.py b/Lib/bsddb/test/test_join.py
index 67507ea..00e7479 100644
--- a/Lib/bsddb/test/test_join.py
+++ b/Lib/bsddb/test/test_join.py
@@ -1,7 +1,7 @@
 """TestCases for using the DB.join and DBCursor.join_item methods.
 """
 
-import sys, os, string
+import sys, os
 import tempfile
 import time
 from pprint import pprint
diff --git a/Lib/bsddb/test/test_lock.py b/Lib/bsddb/test/test_lock.py
index e44bf21..9b5a71f 100644
--- a/Lib/bsddb/test/test_lock.py
+++ b/Lib/bsddb/test/test_lock.py
@@ -2,7 +2,7 @@
 TestCases for testing the locking sub-system.
 """
 
-import sys, os, string
+import sys, os
 import tempfile
 import time
 from pprint import pprint
diff --git a/Lib/bsddb/test/test_pickle.py b/Lib/bsddb/test/test_pickle.py
index 4683ec6..95cb23d 100644
--- a/Lib/bsddb/test/test_pickle.py
+++ b/Lib/bsddb/test/test_pickle.py
@@ -1,5 +1,5 @@
 
-import sys, os, string
+import sys, os
 import pickle
 try:
     import cPickle