我有一段代码,我需要从多个文件中删除启动这样的:为什么我的正则表达式不能处理来自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