So I tried using join()
after splitting a string into words and punctuation but it joins the string with a space in between the word and punctuation.
b = ['Hello', ',', 'who', 'are', 'you', '?']
c = " ".join(b)
But that returns:
c = 'Hello , who are you ?'
and I want:
c = 'Hello, who are you?'
You could join on the punctuation first:
def join_punctuation(seq, characters='.,;?!'):
characters = set(characters)
seq = iter(seq)
current = next(seq)
for nxt in seq:
if nxt in characters:
current += nxt
else:
yield current
current = nxt
yield current
c = ' '.join(join_punctuation(b))
The join_punctuation
generator yields strings with any following punctuation already joined on:
>>> b = ['Hello', ',', 'who', 'are', 'you', '?']
>>> list(join_punctuation(b))
['Hello,', 'who', 'are', 'you?']
>>> ' '.join(join_punctuation(b))
'Hello, who are you?'