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

2024-09-27 09:23:23 发布

您现在位置: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中内置的“find and replace”函数,并在正则表达式模块中提出了替换函数(回复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

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

也许吧回复sub()与write()不匹配?你知道吗


Tags: 文件csv代码程序recomwwwgoogle
1条回答
网友
1楼 · 发布于 2024-09-27 09:23:23

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

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

另外,regex和HTML aren't the best of friends。。。您的案例非常简单,使用regex很好,但是您提到要寻找更好的模块来生成HTML。This SO question在答案中有一些很好的建议。值得一提的是在上面创建HTML模板有xml.etreejinja2(Flask的默认引擎)和yattag。你知道吗

相关问题 更多 >

    热门问题