1

我正在制作一个查找和替换脚本来修复我网站上的一些内容。我正在使用 Python 3.3.2。

这是我的代码:

import re

f = open('random.html', 'w')

strToSearch = " "

for line in f:
    strToSearch += line

patFinder1 = re.compile('<td>Sermon Title</td>\
            <td><audio preload="none" controls src="http://www.orlandobiblechurch.org/Audio/\d{6}ldm.mp3"></audio>\
            </td>\
        </tr>')

findPat1 = re.search(patFinder1, strToSearch)

findPat1 = re.findall(patFinder1, strToSearch)

for i in findPat1:
    print(i)

subFound = patFinder1.sub('<td>Lord\'s Day Morning</td>\
            <td><audio preload="none" controls src="http://www.orlandobiblechurch.org/Audio/\d{6}ldm.mp3"></audio>\
            </td>\
        </tr>', strToSearch)
print(subFound)

f.write(subFound)
f.close()

问题是python告诉我该文件不可读。如果我将此 f = open('random.html', 'w') 更改为 f = open('random.html', 'r') ,则表示它不可写。为什么它需要两者是有道理的,但如果我把两者都放进去,它告诉我必须只有一个读/写的东西。我很肯定这是基本的东西,我只是想不通。感谢您的任何帮助,您可以提供。

4

2 回答 2

1

f = open('random.html', 'r+')

来源:http ://docs.python.org/3/tutorial/inputoutput.html

于 2013-07-24T11:56:01.033 回答
0

您可以使用r+orw+作为第二个参数在两种模式下打开它。参考这里

另外,您是否考虑过使用with声明?他们更pythonic:

with open('random.html', 'w+') as f:
    do_stuff()

这有一个很大的优势,您无需.close()事后手动执行。

  • strToSearch也可以重写为strToSearch = ''.join(f.readlines())

  • 您是否考虑过使用诸如此类的 HTML 解析器BeautifulSoup?比正则表达式更好更容易:)

于 2013-07-24T11:59:07.070 回答