2012-07-23 5 views
1

Здравствуйте, у меня возникли проблемы с правильной работой моего Python. У меня есть текстовый файл в следующем формате:Python найти и заменить в текстовом файле

3|1|15382|25364|| 
3|2|15384|25364|| 
43|1|27444|27297|4849569| 
43|2|27486|27297|4329265| 
107|2|24940|684269|| 
115|1|24869|684269|| 

Мой текущий код Python:

f1 = open('myFile.txt', 'r') 
f2 = open('myFileOutput.txt', 'w') 
for line in f1: 
    f2.write(line.replace('|\n', ',')) 
f1.close() 
f2.close() 

Мой текущий код будет создать myFileOutput.txt, который выглядит следующим образом:

3 | 1 | 15382 | 25364 | 3 | 2 | 15384 | 25364 | 43 | 1 | 27444 | 27297 | 4849569,43 | 2 | 27486 | 27297 | 4329265.107 | 2 | 24940 | 684269 | 115 | 1 | 24869 | 684269 ||

Что я хочу, когда нет данных между двумя знаками || он должен сохранить второй |. Мой текущий код этого не делает. Вот пример того, что я хочу, чтобы это выглядело как:

3 | 1 | 15382 | 25364 ||, 3 | 2 | 15384 | 25364 ||, 43 | 1 | 27444 | 27297 | 4849569,43 | 2 | 27486 | 27297 | 4329265.107 | 2 | 24940 | 684269 ||, 115 | 1 | 24869 | 684269 ||

Я использую Python 2.7.3, а также эти файлы могут иметь размер до 500 МБ.

+0

'f2 .write (line.replace ('| \ n', ','). replace ('|,', '||,')) ' –

+0

@ Оммега, которая, похоже, работает. можете ли вы объяснить, как работает эта вторая .replace? если не все в порядке, спасибо! – michael

+0

@michael Вторая часть решения Ωmega предполагает, что единственными запятыми в файле являются те, которые вы только что добавили. Поэтому, если у вас есть «|», это должно означать, что вы использовали «||». Чтобы получить то, что вы хотели, оно превращает его в «||». – David

ответ

1

Использование f2.write(line.replace('|\n', ',').replace('|,', '||,'))

-1

Один простой способ сделать это было бы первым заменить "|| \ п" с "||| \ п", так что новый код будет

f1 = open('myFile.txt', 'r') 
f2 = open('myFileOutput.txt', 'w') 
for line in f1: 
    line = line.replace('||\n', '|||\n') 
    f2.write(line.replace('|\n', ',')) 
f1.close() 
f2.close() 
Смежные вопросы