-
Notifications
You must be signed in to change notification settings - Fork 74
/
Utils.py
32 lines (29 loc) · 930 Bytes
/
Utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"""This file contains assorted general utility functions used by other
modules in the PyAIML package.
"""
def sentences(s):
"""Split the string s into a list of sentences."""
try: s+""
except: raise TypeError("s must be a string")
pos = 0
sentenceList = []
l = len(s)
while pos < l:
try: p = s.index('.', pos)
except: p = l+1
try: q = s.index('?', pos)
except: q = l+1
try: e = s.index('!', pos)
except: e = l+1
end = min(p,q,e)
sentenceList.append( s[pos:end].strip() )
pos = end+1
# If no sentences were found, return a one-item list containing
# the entire input string.
if len(sentenceList) == 0: sentenceList.append(s)
return sentenceList
# Self test
if __name__ == "__main__":
# sentences
sents = sentences("First. Second, still? Third and Final! Well, not really")
assert(len(sents) == 4)