使用python将CRLFCRLF替换为大文件中的CRLF

问题描述 投票:-1回答:1

我有大的txt文件碰巧有CRLFCRLF组合作为行尾。我必须将其更改为CRLF才能使用此文件。文本编辑器替换和文本编辑器Makros花费的时间太长,因为文件是8 GB。我怎么能用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()
python-2.7 file replace carriage-return linefeed
1个回答
0
投票

尝试使用正则表达式:

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

如果在linux上,请使用subbed = re.sub(r"\n\n", r"\n", t)

© www.soinside.com 2019 - 2024. All rights reserved.