gpt4 book ai didi

python - 为什么我的正则表达式对来自 file.read() 的输入不起作用?

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:09 26 4
gpt4 key购买 nike

我有一段代码需要从多个文件中删除,开头如下:

<?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("""[file text]""") 调用它时,这个程序运行良好——三重引号允许它作为多行读入。

我试图扩展它以打开一个文件并将文件的字符串内容传递给 removeInsert() :

def fileRW(filename):
input_file = open(filename, 'r')
text = input_file.read()
newText = removeInsert(text)
...

但是,当我运行 fileRW([input-file]) 时,我得到这个错误:

return text[:m.start()] + text[m.end():]
AttributeError: 'NoneType' object has no attribute 'start'

我可以确认最后一段代码中的“文本”实际上是一个字符串,并且确实包含问题代码,但 removeInsert() 代码似乎不适用于此字符串。我最好的猜测是它与我在将字符串手动输入 removeInsert() 时所做的三重引号有关。也许 fileRW() 传递给 removeInsert() 的文本不是三重引号(我尝试了不同的方法来强制它使用三重引号(添加了“\”\“\””),但这不起作用) .不过,我不知道如何解决这个问题,并且在我的谷歌搜索中找不到任何关于它的信息。有什么建议吗?

最佳答案

您的正则表达式仅使用 \n 作为行。您的文本编辑器可能会插入回车符和换行符组合:\r\n。尝试将正则表达式中的 \n 更改为 (\r\n|\r|\n)

关于python - 为什么我的正则表达式对来自 file.read() 的输入不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6194967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com