Заменить CRLFCRLF на CRLF в большом файле с python - PullRequest
0 голосов
/ 10 сентября 2018

У меня большие txt-файлы, в которых комбинация CRLFCRLF указана в конце строки. Я должен изменить это на CRLF, чтобы иметь возможность работать с этим файлом. Text-Editor Replace и Text-Editor Makros занимают слишком много времени, поскольку размер файла составляет 8 ГБ. Как я могу сделать это с Python 2.7? Я попробовал следующее, но это не меняет файл. Когда я пытаюсь использовать клавиатуру, например replace('a','A') или replace('BUS','CAR'), работает:

f1 = open('C:/temp/Textfile1.txt', 'r')
f2 = open('C:/temp/Textfile2.txt', 'w')
string = f1.read()
string = string.replace('\r\n\r\n','\r\n')
f2.write(string)
f1.close()
f2.close()

1 Ответ

0 голосов
/ 11 сентября 2018

Попробуйте использовать регулярное выражение:

fn = "t.txt"
fn2= "r.txt"

print '-'*70
with open(fn,"w") as f:
    f.write("ta\r\ntata\r\n\r\ntata\r\n\r\n\r\nta\r\ntaa\r\n\r\n\r\n\r\ntata")

with open(fn,"r") as f:
    print(f.read())

import re
with open(fn,"r") as f:
    t = f.read()

subbed = re.sub(r"\r\n\r\n", r"\r\n", t)
with open(fn2,"w") as f:
    f.write(subbed)

print '-'*70
with open(fn2,"r") as f:
    print(f.read())

Вывод:

----------------------------------------------------------------------
ta
tata

tata


ta
taa



tata
----------------------------------------------------------------------
ta
tata
tata

ta
taa

tata

Sidenote:

Если в Linux используется subbed = re.sub(r"\n\n", r"\n", t)

...