You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python yield生成grid-container HTML时引号冲突问题求解

问题解答

不需要更换yield实现方式,你遇到的问题和yield语法本身无关,是Python字符串的引号嵌套规则导致的语法错误,完全可以在保留yield逐段返回逻辑的前提下解决。

错误原因

你写的这行代码:

yield "<div class="grid-container">".encode('utf-8')

Python解析时会把第二个双引号识别为字符串的结束边界,也就是把"<div class="判定为完整字符串,后面的grid-container">会被当成无效语法直接报错,和外层用了yield没有关系。

可行修复方案

选任意一种即可,都是保留yield逻辑的写法:

  • 方案1(最推荐,写法最简洁):外层字符串改用单引号包裹,HTML属性保留双引号,Python中单引号、双引号定义字符串的效果完全一致,不会出现嵌套冲突:
    yield '<div class="grid-container">'.encode('utf-8')
    
  • 方案2:保留外层双引号,对字符串内部的双引号用反斜杠转义,缺点是转义符多了可读性差:
    yield "<div class=\"grid-container\">".encode('utf-8')
    
  • 方案3:用三引号包裹HTML片段,后续如果要写多行grid相关的标签、内联样式时更方便,三引号内部可以自由使用单、双引号无需转义:
    yield """<div class="grid-container">""".encode('utf-8')
    

额外注意

你当前代码里grid容器内部还是用的<tr>/<td>/<th>这类表格专属子标签,这类标签只能作为<table>的子元素存在,直接放在grid容器里会出现渲染异常,记得替换成对应网格项的div标签,否则就算容器标签修复了,grid布局也无法正常生效。另外你现有代码漏写了grid容器的闭合标签,补全后才能正常渲染。

修正后参考代码

yield '<div class="grid-container">'.encode('utf-8')
for div in soup.findAll('div', attrs={'class':"col-md-10"}):
    # 原tr标签替换为grid行容器
    yield '<div class="grid-row">'.encode('utf-8')
    for name in div.findAll('div', attrs={'name':"label-Address"}):
         # 原td标签替换为grid单元格项
         yield '<div class="grid-item">{}</div>'.format(name.text).encode('utf-8')
    yield '</div>'.encode('utf-8')

    yield '<div class="grid-row">'.encode('utf-8')
    for name in div.findAll('div', attrs={'name':"label-ScheduledDate"}):
         yield '<div class="grid-item">{}</div>'.format(name.text).encode('utf-8')
    yield '</div>'.encode('utf-8')

    yield '<div class="grid-row">'.encode('utf-8')
    for name in div.findAll('div', attrs={'name':"label-CaseNumber"}):
         # 原th的表头样式可以单独给grid-item加对应class实现
         yield '<div class="grid-item grid-header">{}</div>'.format(name.text).encode('utf-8')
    yield '</div>'.encode('utf-8')
# 补上grid容器的闭合标签
yield '</div>'.encode('utf-8')

内容的提问来源于stack exchange,提问作者john

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:42:11