Can someone point me in the right direction on this..
I have a string that contains sentences of words e.g. 'He was trying to learn a pythonic, or regex, way of solving his problem'
The string in question is quite large and I need to break it up into multiple lines, where each line can not exceed 64 characters. BUT I cant just insert a line break every 64 characters. I need to ensure the break occurs at the closest character (from a set of characters) before the 64th character, to ensure the line does not exceed 64 characters. e.g. I can only insert a line break after a space, comma or full stop
I also need the solution to be quite efficient as it is an action that will occur many, many times.
Using textwrap
I'm not sure textwrap is the way to go for my problem because I need to preserve the original line breaks in the input string. Example:
long_str = """
123456789 123456789 123456789 123456789 123456789 123456789
Line 1: Artificial intelligence (AI), sometimes called machine intelligence,
Line 2: is intelligence demonstrated by machines,
Line 3: in contrast to the natural intelligence displayed by humans and other animals.
Line 4: In computer science AI research is defined as
"""
lines = textwrap.wrap(long_str, 60, break_long_words=False)
print('\n'.join(lines))
What I want is this:
123456789 123456789 123456789 123456789 123456789 123456789 Line 1: Artificial intelligence (AI), sometimes called machine intelligence, Line 2: is intelligence demonstrated by machines, Line 3: in contrast to the natural intelligence displayed by humans and other animals. Line 4: In computer science AI research is defined as
But textwrap gives me this:
123456789 123456789 123456789 123456789 123456789 123456789 Line 1: Artificial intelligence (AI), sometimes called machine intelligence, Line 2: is intelligence demonstrated by machines, Line 3: in contrast to the natural intelligence displayed by humans and other animals. Line 4: In computer science AI research is defined as
I suspect that Regex is probably the answer but I'm out of my depth trying to solve this with regex.