在python中读取和重写文本文件的特定部分

时间:2014-07-21 15:10:15

标签: python python-2.7 text

我有一个我想要阅读的文本文件

-------------------
dog: bred
gender: male
age: 6
birth: july
extra:
-purebreed
PRICE: list price 
--------------------
dog: bred
gender: female
age: 10
birth: march
extra:
-purebreed
PRICE: list price 
--------------------
dog: bred
gender: male
age: 2
birth: November 
extra:
-purebreed
PRICE: list price 
--------------------

我已经阅读了不同的方法来做到这一点但是当我尝试它似乎不起作用。我需要用破折号和只有狗来重写文件:和年龄:信息。我有很多条目,我需要能够只列出狗和每个年龄用破折号分隔每个列表。我是否需要根据结肠进行分割,或者我如何只选择狗和年龄?

2 个答案:

答案 0 :(得分:3)

这样的事情可能就是你正在寻找的东西。我所做的是将文本文件读入一个列表(列表中每个元素一行)。然后遍历新创建的列表,如果狗,年龄或破折号在该行中,则将其写入新文本文件。如果该行不符合任何标准,则不会担心。

dogFile = open('dogs.txt', 'r')
lines = dogFile.readlines()
dogFile.close()

newDogFile = open('newDogs.txt', 'w')
for line in lines:
    if 'dog:' in line or 'age:' in line or '--------------------' in line:
        newDogFile.write(line)
newDogFile.close()

无论您认为哪种方式看起来更好,无关紧要,每种方法的结果都是相同的,即:

dog: bred
age: 6
--------------------
dog: bred
age: 10
--------------------
dog: bred
age: 2
--------------------

答案 1 :(得分:0)

以下代码写入新文本文件,因为它从旧文本文件中读取。

import fileinput
import sys

for line in fileinput.input(["a.txt"], inplace=True, backup='.bak'):
    if 'dog' in line or 'age' in line or '-------' in line:        
        sys.stdout.write(line)

#output

-------------------
dog: bred
age: 6
--------------------
dog: bred
age: 10
--------------------
dog: bred
age: 2
--------------------