我有一段代碼,我需要從多個文件中刪除啓動這樣的:爲什麼我的正則表達式不能處理來自file.read()的輸入?
<?php
//{{56541616
結束這樣的:
//}}18420732
?>
其中數字是兩個字符串可以是任何序列字母和數字(不一樣)。
我寫了一個Python程序,將返回整個輸入字符串,除了這個問題字符串:
def removeInsert(text):
m = re.search(r"<\?php\n\/\/\{\{[a-zA-Z0-9]{8}.*\/\/\}\}[a-zA-Z0-9]{8}\n\?>", text, re.DOTALL)
return text[:m.start()] + text[m.end():]
這個程序的偉大工程,當我把它與removeInsert(「」「[文件文本]」「」 ) - 三重引號允許將它讀入多行。
我試圖擴展這個打開一個文件,並將該文件的字符串內容到removeInsert()與此:
def fileRW(filename):
input_file = open(filename, 'r')
text = input_file.read()
newText = removeInsert(text)
...
然而,當我運行fileRW([輸入文件]),I得到這個錯誤:
return text[:m.start()] + text[m.end():]
AttributeError: 'NoneType' object has no attribute 'start'
我可以證實,「文本」在這最後的代碼實際上是一個字符串,確實包含問題代碼,但它似乎removeInsert()的代碼不會對這個字符串工作。我最好的猜測是它與我在手動輸入字符串到removeInsert()時執行的三重引用有關。也許fileRW傳遞給removeInsert()的文本不是三引號的(我試過用不同的方法強制它有三重引號(「\」\「\」「加),但那是行不通的) 。我不知道如何解決這個問題,但在我的谷歌搜索中找不到任何有關它的信息。任何建議?
謝謝!這解決了它。我以爲可能會出現換行問題,但不能提出它的樣子。 – Kristen 2011-06-01 01:02:50