from StringIO import StringIO import string testcases = r"""1 -> 1 1"2" -> 12 1"2 -> 12 1"\"2" -> 1"2 "1" "2" -> 1, 2 1\" -> 1" 1\\" -> 1\ 1\\\" -> 1\" 1\\\\" -> 1\\ 1" 1 -> 1 1 1\" 1 -> 1", 1 1\1 -> 1\1 1\\1 -> 1\\1 """ #testcases = r"""1\\\\" -> 1\\ #""" t = StringIO(testcases) def quote(s): result = s.replace("\\", r"\\") result = result.replace("\"", "\\\"") return '"' + result + '"' for s in t: s = string.strip(s) (value, result) = string.split(s, "->") # print value, result tokens = string.split(result, ",") value = quote(value) tokens = map(string.strip, tokens) tokens = map(quote, tokens) print "TEST(%s, {%s});" % (value, string.join(tokens, ","))