2014-07-21 124 views
-3

一個文本文件中的特定部分我有,我想讀閱讀並重寫蟒蛇

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

你試過了什麼? –

回答

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 
-------------------- 
+4

爲什麼不把它壓縮成'if'dog:'in line or'age:'in line或'-------'in line:newDogFile.write(line)'? –

+0

@ ArtjomB。你是對的。改變它 – heinst

+0

在結果之前是否會有一種方法來包含「狗:」和「年齡:」? – user3822682

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