When a ParseElement contains a group, .transformString returns an incorrect result that has a 'stringified list' contained within it
For instance, try this code:
from pyparsing import *
# function for use with setParseResults, so we can see what transformString is doing
def lowercaseResults(results):
if isinstance(results, (ParseResults, list, tuple)):
return map(lowercaseResults, results)
else:
return str(results).lower()
# Only diff between greet1 and greet2 is greet2 uses a Group
greet1 = Word(alphas) + "," + Word(alphas) + Word("!.?")
greet2 = Group(Word(alphas) + ",") + Word(alphas) + Word("!.?")
greet1.setParseAction(lowercaseResults)
greet2.setParseAction(lowercaseResults)
hello = "Hello, world!!!!"
print repr(greet1.transformString(hello)) # 'hello,world!!!!'
print repr(greet2.transformString(hello)) # "['hello', ',']world!!!!"
Fix for bug with transformString + Group