Вы можете использовать что-то вроде этого:
def clean_up(lines):
clean_lines = []
for line in lines:
cols = line.split('|')
replaced_except_last = (col.replace('\r\n', '') for col in cols[:-1])
cols[:-1] = replaced_except_last
# join them back or do anything you want
clean_lines.append('|'.join(cols))
return clean_lines
Идея состоит в том, что мы заменим ненужные CRLF во всех столбцах, кроме последнего.
При желании вы можете сделать это генератором тоже, что может помочь, если ваш файл очень большой и вам не хочется загружать его в память лишний раз.
def clean_up(lines):
for line in lines:
cols = line.split('|')
cols[:-1] = (col.replace('\r\n', '') for col in cols[:-1])
yield '|'.join(cols) # if you want to get the list, "yield cols"
, а затем вы используете его как
with open('filename') as file:
# the file will be passed in line-by-line
for clean_line in clean_up(file):
print(clean_line)