【问题标题】:Not able to generate HTML code correctly无法正确生成 HTML 代码
【发布时间】:2012-11-15 03:36:32
【问题描述】:

我正在尝试读取一个列表,值可以是单个的,也可以有多个用逗号分隔的条目,我的目标是为列表中的第一个值附加 href 链接,即 col[0],我遇到了以下编译错误

INPUT:-
cols=['409452,  12345', '', '', 'This a test python script']

EXPECTED OUTPUT:-
 <tr>
<td><a href=http://data/409452>409452,<a href=http://data/12345>12345</a></td>
<td></td>
<td></td>
<td>This a test python script</td>

Python 代码:-

  cols=cols=['409452,  12345', '', '', 'This a test python script']

TEMPLATE = ['  <tr>']
for col in cols:
    value = col.split(",")  
    TEMPLATE.append(
        '    <td><a href=http://data/{}> {}</a></td>'.format(value)
TEMPLATE.append('  </tr>')
TEMPLATE = '\n'.join(TEMPLATE)
print TEMPLATE


Output I am getting:-


TEMPLATE.append('  </tr>')
       ^
SyntaxError: invalid syntax

【问题讨论】:

  • 您在第一个 TEMPLATE.append 末尾缺少一个 ')'。
  • 如果我尝试下面的代码,我得到错误 TEMPLATE.append(' data{}> {}'.format (*value)) IndexError: 元组索引超出范围
  • 你能粘贴你的整个回溯吗,分享一个来自 paste.org 的链接或任何最适合你的东西。
  • @PepperoniPizza - 这是链接pastie.org/5380643
  • 我认为您的问题与格式方法有关,请在此处检查string formatting 您可以尝试不带 .format() 的脚本并查看它是否运行,然后您可以证明您的问题存在。

标签: python html


【解决方案1】:

您没有向我们展示您的实际代码(因为该示例中没有 13 行,但您的错误消息在第 13 行显示了错误)。然而,在这种情况下,我认为答案相当简单......仔细看看这一行:

TEMPLATE.append(
    '    <td><a href=http://data/{}> {}</a></td>'.format(value)

删除字符串使其更明显:

TEMPLATE.append(''.format(value)

如您所见,您缺少结束语 )

【讨论】:

    【解决方案2】:

    除了别人提到的)缺失之外,你使用的格式有误(need to use *value to have it look for items in the array)。 (您对 cols 的定义也有错误的缩进,并且多了一个 cols=。)

    此代码有效:

    cols=['409452,  12345', '', '', 'This a test python script']
    
    TEMPLATE = ['  <tr>']
    for col in cols:
        if "," in col:
            value = col.split(",")
            value[:] = ['<a href=http://data/{0}>{0}</a>'.format(id.strip()) for id in value]
            col = ','.join(value)
        TEMPLATE.append('    <td>{}</td>'.format(col))
    TEMPLATE.append('  </tr>')
    TEMPLATE = '\n'.join(TEMPLATE)
    print TEMPLATE
    

    输出:

      <tr>
        <td><a href=http://data/409452>409452</a>,<a href=http://data/12345>12345</a></td>
        <td></td>
        <td></td>
        <td>This a test python script</td>
     </tr>
    

    【讨论】:

    • 如果我尝试上面的代码,我会收到以下错误 TEMPLATE.append(' data{}> {}'.格式(*值))IndexError:元组索引超出范围
    • 听起来value 包含的元素少于两个。您是否使用我的代码中的cols 的值?尝试在该行之前加上print value 看看有什么问题。
    • ya..有时它包含的元素少于两个,输入应该是 cols=cols=['409452, 12345', '', '', 'This a test python script'],as你可以看到只有第一个值有两个元素,有时没有值和
    • @user1795998:FWIW,我认为这个答案是正确的。
    • 你不需要写value[:] = ['&lt;a href...strip()],因为稍微简单一点的value = ['&lt;a href...strip()]也能做同样的事情。
    猜你喜欢
    • 2018-01-26
    • 2021-04-19
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多