On Sun, Apr 10, 2016, at 03:51 PM, Fillmore wrote: > > let's look at this: > > $ python3.4 > Python 3.4.0 (default, Apr 11 2014, 13:05:11) > [GCC 4.8.2] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> line1 = '"String1" | bla' > >>> parts1 = line1.split(" | ") > >>> parts1 > ['"String1"', 'bla'] > >>> tokens1 = eval(parts1[0]) > >>> tokens1 > 'String1' > >>> tokens1[0] > 'S' > > and now this > > >>> line2 = '"String1","String2" | bla' > >>> parts2 = line2.split(" | ") > >>> tokens2 = eval(parts2[0])
I *THINK* what you're asking is why this returns a tuple, where in the first eval you got a string. The answer is because commas create tuples (not parens), so: "String1", "String2" is a tuple expression. Whereas: "String1" is a string expression. > the question is: at which point did the language designers decide to > betray the > "path of least surprise" principle and create a 'discontinuity' in the > language? There's nothing inconsistent or surprising going on besides you doing something vaguely weird and not really expressing what you find surprising. --Stephen m e @ i x o k a i . i o -- https://mail.python.org/mailman/listinfo/python-list