在写入HTML文件之前尝试用一个变量替换另一个变量

时间:2019-07-14 03:26:58

标签: python

我有一个python程序,该程序读取csv文件,进行一些更改,然后写入HTML文件。问题是代码块,我试图搜索分配给一个变量的字符串,然后用分配给另一个变量的另一个字符串替换它。我可以读取csv文件中的一行,如下所示:

Link:,www.google.com

并且我成功编写了具有以下内容的html文件:

<tr><td>Link:</td><td><a href="https://www.google.com">www.google.com</a></td></tr>

从本质上讲,我想进一步介绍一下在锚标记之间找到www.google.com并将其替换为“ GOOGLE”。

我研究了python内置的“查找和替换”函数,并在正则表达式模块(re.sub())中提出了替换函数。这可能不是最好的方法,我正在尝试确定是否有更好的功能/模块值得研究。

python
   for line in file:
       newHTML.write(re.sub(var1,var2,line,flags=re.MULTILINE), end='')         
       newHTML.write(re.sub(var3,var4,line,flags=re.MULTILINE), end='')

我收到的错误是:

newHTML.write(re.sub(var1,var2,line,flags=re.MULTILINE), end='')
TypeError: write() takes no keyword arguments

如果我注释掉这段代码,则程序的其余部分运行良好,尽管没有找到并替换这些变量。

也许re.sub()与write()不能很好地配合?

1 个答案:

答案 0 :(得分:1)

该错误说明了问题所在:正如@furas所评论的,write()print()不同,并且不接受end=''关键字参数。如果您未明确放置任何file.write(),则\n默认不包含换行符,因此,如果将行更改为:

newHTML.write(re.sub(var1,var2,line,flags=re.MULTILINE))

另外,正则表达式和HTML aren't the best of friends ...您的情况很简单,使用正则表达式很好,但是您提到了寻找更好的模块来生成HTML的情况。 This SO question在答案中提出了一些好的建议。在xml.etreejinja2(Flask的默认引擎)和yattag上创建HTML模板的值得注意。