2013-08-30 66 views
0

我想替換由我的程序創建的文件中的字符串,但我不能使用.replace,因爲它不在3.3中,如何使用兩個替換文件中的一行輸入(以前的字符串,更換),這裏是到目前爲止的代碼:如何替換python中的文件中的一行

#Data Creator 
def Create(filename): 
    global UserFile 
    UserFile = open(str(filename), "w") 
    global file 
    file = (filename) 
    UserFile.close() 

#Data Adder 
def Add(data): 
    UserFile = open(file, "a") 
    UserFile.write(str(data)) 
    UserFile.close() 

#Data seeker 
def Seek(target): 
    UserFile = open(file, "r") 
    UserFile.seek(target) 
    global postition 
    position = UserFile.tell(target) 
    UserFile.close() 
    return position 

#Replace 
def Replace(take,put): 
    UserFile = open(file, "r+") 
    UserFile.replace(take,put) 
    UserFile.close 

Create("richardlovesdogs.txt") 
Add("Richard loves all kinds of dogs including: \nbeagles") 
Replace("beagles","pugs") 

如何做到這一點,所以它替換「哈巴狗」這個詞「獵兔犬」? 我正在學習Python的所以任何幫助,將不勝感激

編輯:

香港專業教育學院改變了代碼替換這個

#Replace 
def Replace(take,put): 
    UserFile = open(file, 'r+') 
    UserFileT = open(file, 'r+') 
    for line in UserFile: 
     UserFileT.write(line.replace(take,put)) 
    UserFile.close() 
    UserFileT.close() 

但該文件在其輸出:

Richard loves all kinds of dogs including: 
pugsles 

我如何改變它,所以它只輸出「哈巴狗」而不是「哈巴狗」

+0

'file.replace'從未出現在python中。 –

+0

'str.replace()'是* strings *上的一個方法。它不是一個文件對象的方法。它從來沒有。 –

+0

我確定我在某個地方讀過它,必須是一個錯誤有什麼其他方式嗎? – Jaffar

回答

0

我想到的第一個想法是遍歷行並檢查給定行是否包含要替換的單詞。然後,只需使用字符串方法 -​​ 替換。當然,最終結果應該放在/寫入文件中。

+0

這意味着將整個文件放入一個字符串然後編輯它?有效覆蓋整個文件? – Jaffar

+0

您可以使用方法readlines爲給定文件創建行列表,然後您可以遍歷列表。 – mic4ael

+0

@ mic4ael'file.readlines'也將整個文件加載到內存中,只需遍歷文件對象一次加載一行。 –

0

也許你在想的是Unix shell中的sed命令,它可以讓你用文件中的替換文本替換文件中的特定文本。

正如其他人所說,替換Python中的文本一直是str.replace()

希望這會有所幫助!

0

在沒有將整個文件加載到內存中的情況下,最快的方法是使用file seek, tell and flush。將起始指針設置爲位置0,並通過文件len(replacement_word)遞增。如果幾個字節的代碼段匹配,那麼你在文件中設置一個標記。

掃描完文件後,您可以使用標記重建文件,並使用它們之間的替換字符串連接段。