You could use a regular expression with finditer():
import re
s = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr. sed diam nonumy eirmod tempor. invidunt ut labore et dolore mgna aliquyam erat. sed diam voluptua. At vero eos et accusam et justo duo dolores."
r = [m.group().strip() for m in re.finditer(r' *((.{0,99})(\.|.$))',s)]
print(r)
['Lorem ipsum dolor sit amet, consetetur sadipscing elitr. sed diam nonumy eirmod tempor.',
'invidunt ut labore et dolore mgna aliquyam erat. sed diam voluptua.',
'At vero eos et accusam et justo duo dolores.']
print(*map(len,r)) # 87 67 44
The r' *((.{0,99})(\.|.$))'
expression finds up to 99 characters (.{0,99})
followed by a period or the last character of the string (\.|.$)
. It also includes (but does not count) leading spaces *
so that the space following a line breaking period can be stripped from the subsequent line without hampering its length limit.
Note that this assumes that no individual sentence has more than 100 characters. Depending on what you want to do when this occurs, you can adjust the regular expression accordingly. For example, if you want to arbitrarily split after 100 character: *((.{0,99})(\.|.$)|(.{100}))
or try to break between words: *((.{0,99})(\.|.$)|(.{100})\b)
.