Identifying the start of good data in a list
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Wed Aug 27 11:50:14 EDT 2008
On Tue, 26 Aug 2008 17:04:19 -0700, tdmj wrote:
> On Aug 26, 5:49 pm, tkp... at hotmail.com wrote:
>> I have a list that starts with zeros, has sporadic data, and then has
>> good data. I define the point at which the data turns good to be the
>> first index with a non-zero entry that is followed by at least 4
>> consecutive non-zero data items (i.e. a week's worth of non-zero data).
>> For example, if my list is [0, 0, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9], I
>> would define the point at which data turns good to be 4 (1 followed by
>> 2, 3, 4, 5).
...
> With regular expressions:
Good grief. If you're suggesting that as a serious proposal, and not just
to prove it can be done, that's surely an example of "when all you have
is a hammer, everything looks like a nail" thinking.
In this particular case, your regex "solution" gives the wrong result,
indicating that you didn't test your code before posting. Hint:
re.search(r'[1-9]{5, }', "123456")
returns None.
The obvious fix for that specific bug is to use r'[1-9]{5,5}', but even
that will fail. Hint: what happens if an item has more than one digit?
Before posting another regex solution, make sure it does the right thing
with this:
[0, 0, 101, 0, 1002, 203, 3050, 4105, 5110, 623, 777]
--
Steven
More information about the Python-list
mailing list