Importuj plik .csv, który wygląda:

enter image description here

Używając następujących Kod :

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)

Które dają wyjście:

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'

Mam problemy, aby zastąpić \r\r\n do \r\n, co myślę, że muszę zrobić, aby uzyskać pożądaną wydajność. Błąd, który otrzymuję, gdy próbuję zastąpić \r\r\n jest:

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'

Moje pożądane wyjście:

enter image description here

Co muszę dodać lub zmienić do kodu, aby osiągnąć mój pożądany wyjście?

0
Wizhi 13 lipiec 2020, 22:33

1 odpowiedź

Najlepsza odpowiedź

Jak mówi komunikat o błędzie, podaj obiekt bytes.

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

Aby uzyskać pożądane wyjście

line = line.replace(b'\r\r\n', b'')
1
Wizhi 13 lipiec 2020, 19:44