Steve Holden wrote:
Steve Holden wrote:
[...]
Can someone explain why these two commands are giving different
results?  I thought I should have the same number of matches (or maybe
different by 1, but not 6000!)

re.MULTLINE is apprently 1, and you are providing it as the "maxsplit"
argument. Check the API in the documentation.

Sorry, I presume re.MULTILINE must actually be zero for the result of
re,split() to be of length 1 ...

Because it's not doing a multiline split and it's anchored at the beginning of the line, it only returns one result (there's nothing before the start-of-line to return as the left-side of the split):

>>> import re
>>> re.MULTILINE
8
>>> s = """
... abc
... def
... abc
... def"""
>>> re.split('^', s,  re.MULTILINE)
['\nabc\ndef\nabc\ndef']
>>> re.split('b', s,  re.MULTILINE)
['\na', 'c\ndef\na', 'c\ndef']
>>> re.split('b', 'ab'*10,  re.MULTILINE)
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'abab']


But your original logic is sound...the 3rd argument re.split() is "maxsplit" not "flags", and if you want to use flags with .split() you have to either specify it within the regexp or by compiling the regexp and using the resulting compiled object as detailed elsewhere in the thread by MRAB and Duncan.

-tkc



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to