首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python的主导库中是否有类似于.replace()的函数?

Python的主导库中是否有类似于.replace()的函数?
EN

Stack Overflow用户
提问于 2020-03-02 15:16:39
回答 1查看 295关注 0票数 1

我希望将HTML标记添加到从.txt文件中提取的文本中,然后将其保存为HTML。我试图找到一个特定单词的任何实例,然后用锚标记中的同一个单词替换它。

就像这样:

代码语言:javascript
复制
import dominate
from dominate.tags import *

item = 'item1'
text = ['here is item1 in a line of text', 'here is item2 in a line too']
doc = dominate.document()

with doc:
    for i, line in enumerate(text):
        if item in text[i]:
            text[i].replace(item, a(item, href='/item1')) 

上面的代码提供了一个错误:

TypeError:替换()参数2必须是str,而不是a。

我可以做到这一点:

代码语言:javascript
复制
print(doc.body)
代码语言:javascript
复制
<body>
  <p>here is item1 in a line of text</p>
  <p>here is item2 in a line too</p>
</body>

但我想要这个:

代码语言:javascript
复制
print(doc.body)
代码语言:javascript
复制
<body>
  <p>here is <a href='/item1'>item1</a> in a line of text</p>
  <p>here is item2 in a line too</p>
</body>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-20 16:03:38

achieve中没有replace()方法,但是这个解决方案适用于我想要实现的目标:

  1. 将锚标记创建为字符串。存储在变量'item_atag':

代码语言:javascript
复制
    item = 'item1'
    url = '/item1'
    item_atag = '<a href={}>{}</a>'.format(url, item)

  1. 使用主导库在原始文本的每一行周围包装段落标记,然后转换为string:

代码语言:javascript
复制
    text = ['here is item1 in a line of text', 'here is item2 in a line too']

    from dominate import document
    from dominate.tags import p

    doc = document()

    with doc.body:
        for i, line in enumerate(text):
            p(text[i])

    html_string = str(doc.body)

  1. 对字符串使用Python的内置替换()方法来添加锚标记:

代码语言:javascript
复制
    html_with_atag = html_string.replace(item, item_atag)

最后,将新字符串写入文件:

代码语言:javascript
复制
    with open('html_file.html', 'w') as f:
        f.write(html_with_atag)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60491777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档