Заменить возврат каретки (CR) и возврат каретки и перевод строки (CRLF) python - PullRequest
0 голосов
/ 13 июля 2020

Я импортирую .csv файл, который выглядит так:

enter image description here

by using the following код :

filetoread = 'G:/input.csv'
filetowrite = 'G:/output.csv'

# https://stackoverflow.com/questions/17658055/how-can-i-remove-carriage-return-from-a-text-file-with-python/42442131

with open(filetoread, "rb") as inf:
    with open(filetowrite, "wb") as fixed:
        for line in inf:
            # line = line.replace('\r\r\n', 'r\n')
            fixed.write(line)
            print(line)

Что дает результат:

b'\xef\xbb\xbfHeader1;Header2;Header3;Header4;Header5;Header6;Header7;Header8;Header9;Header10;Header11;Header12\r\n'
b';;;1999-01-01;;;01;;;;;;\r\n'
b';;;2000-01-01;;;12;;"NY123456789\r\r\n'
b'";chapter;2020-01-01 00:00:00;PE\r\n'
b';;;2020-01-01;;;45;;"NY123456789\r\r\n'
b'";chapter;1900-01-01 00:00:00;PE\r\n'
b';;;1999-01-01;;;98;;;;;;\r\n'

У меня есть проблемы с заменой \r\r\n на \r\n, что, как мне кажется, мне нужно сделать, чтобы получить желаемый результат. Ошибка, которую я получаю, когда пытаюсь заменить \r\r\n:

Traceback (most recent call last):
  File "g:/till_format_2.py", line 10, in <module>
    line = line.replace('\r\r\n', 'r\n')
TypeError: a bytes-like object is required, not 'str'

Мой желаемый результат:

введите описание изображения здесь

Что мне нужно добавить или изменить в коде для достижения желаемого результата?

1 Ответ

1 голос
/ 13 июля 2020

Как говорится в сообщении об ошибке, укажите объект bytes.

line = line.replace(b'\r\r\n', b'\r\n')

Чтобы получить желаемый результат

line = line.replace(b'\r\r\n', b'')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...