Mercurial > hg > TextShaper
changeset 51:c3b69728f291
finding indices now works
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Sun, 17 May 2015 08:33:23 -0700 |
parents | 1284c99a94fa |
children | 8d8c1ac0e8e1 |
files | tests/test_split.py textshaper/split.py |
diffstat | 2 files changed, 21 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/tests/test_split.py Sat May 16 21:02:07 2015 -0700 +++ b/tests/test_split.py Sun May 17 08:33:23 2015 -0700 @@ -10,10 +10,11 @@ from textshaper import split + class SplitUnitTest(unittest.TestCase): def test_findall(self): - """test basic""" + """test finding all substrings""" # 012345678901 string = 'a cat, a bat' @@ -24,6 +25,18 @@ self.assertEqual(split.findall(string, 't'), [4, 11]) + def test_indices(self): + """test finding ordered indices""" + string = 'a cat, a bat' + indices = split.indices(string, ('a', 't')) + self.assertEqual(indices, + [(0, 'a'), + (3, 'a'), + (4, 't'), + (7, 'a'), + (10, 'a'), + (11, 't')]) + if __name__ == '__main__': unittest.main()
--- a/textshaper/split.py Sat May 16 21:02:07 2015 -0700 +++ b/textshaper/split.py Sun May 17 08:33:23 2015 -0700 @@ -24,11 +24,16 @@ except ValueError: return retval -def findindices(_string, values): +def indices(text, values): """ returns ordered list of 2-tuples: (index, value) """ + locations = {value: findall(text, value) for value in values} + indices = [] + for key, values in locations.items(): + indices.extend([(value, key) for value in values]) + return sorted(indices, key=lambda x: x[0]) def split_sentences(text, ends='.?!'): """split a text into sentences""" @@ -58,7 +63,7 @@ ends = '.?!' # find all ending punctuation - indices = {end: findall(text, end) for end in ends} + if __name__ == '__main__':