import types def joinCSVFields(fields): """ Returns a CSV record (eg a string) from a sequence of fields. Fields containing commands (,) or double quotes (") are quoted and double quotes are escaped (""). The terminating newline is NOT included. """ newFields = [] for field in fields: assert type(field) is types.StringType if field.find('"') != -1: newField = '"' + field.replace('"', '""') + '"' elif field.find(',') != -1 or field.find('\n') != -1 or field.find('\r') != -1: newField = '"' + field + '"' else: newField = field newFields.append(newField) return ','.join(newFields)