Python在文本文件中查找和替换

时间:2012-07-23 22:53:26

标签: regex python-2.7 replace

您好我无法让我的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,这些文件的大小也可达500MB。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

一种简单的方法是首先用“||| \ n”替换“|| \ n”,所以新代码将是

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()