diff --git a/Lib/gzip.py b/Lib/gzip.py
index 53e6e9c..8e34ed2 100644
--- a/Lib/gzip.py
+++ b/Lib/gzip.py
@@ -5,7 +5,7 @@
 
 # based on Andrew Kuchling's minigzip.py distributed with the zlib module
 
-import string, struct, sys, time
+import struct, sys, time
 import zlib
 import __builtin__
 
@@ -138,7 +138,7 @@
             self.fileobj.write( self.compress.compress(data) )
 
     def writelines(self,lines):
-        self.write(string.join(lines))
+        self.write(" ".join(lines))
 
     def read(self, size=-1):
         if self.extrasize <= 0 and self.fileobj is None:
@@ -281,10 +281,10 @@
         readsize = min(100, size)    # Read from the file in small chunks
         while 1:
             if size == 0:
-                return string.join(bufs, '') # Return resulting line
+                return "".join(bufs) # Return resulting line
 
             c = self.read(readsize)
-            i = string.find(c, '\n')
+            i = c.find('\n')
             if size is not None:
                 # We set i=size to break out of the loop under two
                 # conditions: 1) there's no newline, and the chunk is
@@ -296,7 +296,7 @@
             if i >= 0 or c == '':
                 bufs.append(c[:i+1])    # Add portion of last chunk
                 self._unread(c[i+1:])   # Push back rest of chunk
-                return string.join(bufs, '') # Return resulting line
+                return ''.join(bufs)    # Return resulting line
 
             # Append chunk to list, decrease 'size',
             bufs.append(c)
diff --git a/Lib/keyword.py b/Lib/keyword.py
index 003e652..d331d91 100755
--- a/Lib/keyword.py
+++ b/Lib/keyword.py
@@ -52,7 +52,7 @@
 iskeyword = kwdict.has_key
 
 def main():
-    import sys, re, string
+    import sys, re
 
     args = sys.argv[1:]
     iptfile = args and args[0] or "Python/graminit.c"
@@ -66,7 +66,7 @@
     while 1:
         line = fp.readline()
         if not line: break
-        if string.find(line, '{1, "') > -1:
+        if line.find('{1, "') > -1:
             match = strprog.search(line)
             if match:
                 lines.append("        '" + match.group(1) + "',\n")
@@ -89,7 +89,7 @@
 
     # write the output file
     fp = open(optfile, 'w')
-    fp.write(string.join(format, ''))
+    fp.write(''.join(format))
     fp.close()
 
 if __name__ == "__main__":
