I think it could be solved in a much easier way. s.replace('\n ', '')
In other words removing a new line followed by a space. In such case, the approach is not by line. f = open('file.ics') content=f.read().replace('\n ', '') f.close() The real use case is an .ics file. It works as expected but there's a thing I've to understand about the end of line in general. The original file line break is CR CF cat --show-all file.ics METHOD:PUBLISH^M$ BEGIN:VTIMEZONE^M$ I noticed that the end of file doesn't get preserve if I create a copy of the file by simply f = open('file.ics') content=f.read() f.close() f = open('file_copy.ics', 'w') write('content') f.close() cat --show-all file_copy.ics METHOD:PUBLISH$ BEGIN:VTIMEZONE$ What am I missing? ----- Messaggio originale ----- Da: "Peter Otten" <__pete...@web.de> A: "Tutor Python" <tutor@python.org> Inviato: Lunedì, 4 febbraio 2019 20:23:59 Oggetto: Re: [Tutor] Remove soft line break Valerio Pachera wrote: > > I have a file with row that split at the 80th character. > The next row start with a blank space, meaning that i part of the previous > row. > > Example: > > Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam non justo > enim. Viv > amus dapibus quis neque vitae ornare. Pellentesque at pharetra sapien, id > eleif end lacus. Nullam ut semper enim, vulputate venenatis justo. > Vestibulum vehicul a dolor sit amet ultricies vulputate. Aenean lobortis, > nulla eu scelerisque hen > > What do you suggest to get the text on a single line? Neglecting the corner cases: $ cat mergelines.py def merge_lines(lines): lines = (line.rstrip("\n") for line in lines) accu = [next(lines)] for line in lines: if line.startswith(" "): accu.append(line[1:]) else: yield "".join(accu) + "\n" accu = [line] yield "".join(accu) + "\n" _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor