读取文件/匹配字符串/用用户输入/写入文件替换字符串的一部分

时间:2013-11-13 05:34:33

标签: python

阅读网络上的百万资源,我变得更加困惑而不是帮助,因为我相信有很多方法可以做我需要做的事情。

所以我希望你们中的一些python大师可以帮我一把。

我需要做的是:

  • 提示用户输入[INPUT]
  • 打开一个html文件(简单,没什么太大)
  • 搜索<a target="_top" href="http://website">Local website</a>
  • 用[INPUT]
  • 替换http://website(永远不会是相同的字符串)
  • 写文件(打开同一个文件)

现在,如果我理解正确,我应该在python中使用正则表达式,这是正确的吗?

我的伪代码(对不起,我知道它看起来很糟糕)将是:

var = raw_input("Enter input: ")
print var, "will be the new site"

import re
o = open("test.html","w")
data = open("test.html").read()
o.write( re.sub("<a target="_top" href="(*)">Local website</a>",var,data) )
o.close()

以上可能甚至不是最好的方法,但它没有正则表达式部分,做一个简单的匹配替换(匹配总是相同)。

你们的任何暗示?

1 个答案:

答案 0 :(得分:0)

你的代码看起来很不错。我只是改变了一点。由于您的代码似乎功能正常,我对您的问题不是很清楚。希望它有所帮助:

import re

INFILE = 'test.html'
OUTFILE = 'replaced.html'

new_site_name = raw_input('Enter input: ')
print new_site_name, 'will be the new site.'

pattern = '<a .* href="(.+)">.+</a>'
replacement = '<a target="_top" href=%s>Local website</a>'  % new_site_name

with open(INFILE, 'r') as f:
    html_text = f.read()

with open(OUTFILE, 'w') as f:
    f.write(re.sub('<a .* href="(.+)">.+</a>', replacement, html_text))