Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在HTML中传递字符串和整数_Python - Fatal编程技术网

Python 在HTML中传递字符串和整数

Python 在HTML中传递字符串和整数,python,Python,我正在写一个python程序来发送电子邮件。我想向html标记传递一个字符串。 这是密码 Item= ['hi', 'bye'] I = Item.pop(1) Age=67 me=abc@gmail.com you=bba@gmail.com msg= MIMEMultipart('alternative') msg['subject'] = "test email" msg['from'] = me msg['to'

我正在写一个python程序来发送电子邮件。我想向html标记传递一个字符串。 这是密码

    Item= ['hi', 'bye']
    I = Item.pop(1) 
    Age=67
    me=abc@gmail.com
    you=bba@gmail.com
    msg= MIMEMultipart('alternative') 
    msg['subject'] = "test email"
    msg['from'] = me
    msg['to'] = you
    text= "happy birthday"
    html = '''\
            <html>
              <body> 
                 <p>   %s</p>
                  <p> it's your %s birthday</p>
                </body></html>
                                 ''' %str(I, Age) 
     part1 = MIMEText(text, 'plain') 
     part2 = MIMEText(html, 'html') 
     msg.attach(part1) 
     msg.attach(part2) 
     s= smtplib.SMTP("hostname", port=12) 
     s.sendemail(me, you, msg.as_string()) 
     s.quit() 

您可以使用格式函数代替
%
,如下所示:

html = '''\
    <html>
      <body> 
         <p>   {s}</p>
          <p> it's your {s} birthday</p>
        </body></html>
                         ''' .format(s=I + " " + str(Age)) 
html=''\
{s}

今天是你的生日

''。格式(s=I+''+str(年龄))
您的错误消息与您的代码片段不匹配(至少对我来说不是-python 3.6.x),并且有一些明显的语法错误。您应该注意发布适当的[mcve]

但不管怎样:我不知道你通过调用
str(I,Age)
期望得到什么,但它既错了(请阅读
str()
的文档)也没用(格式化操作会处理格式化,这就是它们的用途)

注意,您只需要(为了可读性而简化):

html=“%s

%s

”%(I,年龄)
或者最好:

html = "<p>{}</p> <p>{}</p>".format(I, Age)
html=“{}

{}

”。格式(I,年龄)
str
用于将变量从一种类型转换为另一种类型

>a=1
>>>类型(a)
>>>b=str(a)
>>>类型(b)
在这里,您将多个参数传递给
str
,但是
I
变量已经是字符串,只有
Age
变量需要转换为字符串

>>%s,我是%s岁“('Hi',str(39))
“嗨,我39岁了”
编辑:由于@Brunodesshuilliers的评论,似乎甚至不需要转换。

>>%s,我是%s岁的“('Hi',39)
“嗨,我39岁了”
/EDIT

但事实上,即使这样也没有真正的用处。您可以调用字符串对象的
format
方法来进行转换。使用大括号和传递给format的参数的索引,而不是printfilke格式说明符(
%d
%s
),等等

>>“{0},我{1}岁”。格式('Hi',39)
“嗨,我39岁了”
从python 3.6开始,您也可以使用f-strings,只需将变量名直接放在一个带有前导
f
的字符串中(即f-string名称):

>I='Hi'
>>>年龄=39
>>>f“{I},我{Age}岁”
“嗨,我39岁了”

这是一篇很好的文章,可以进一步了解。

HTML是文本。您的问题只是关于字符串格式(标记已删除)。执行字符串连接以将内容传递给
str.format()
到底有什么意义???我只想显示此语句的替换:
%str(I,Age)
…我担心就像King11已经说过的那样,通过对答案进行向下投票,实际上解决了最初的问题,即关于消除类型错误的问题,而不是关于字符串格式的最佳实践,您没有提供任何价值。您能试着理解OP真正想要得到的结果吗?事实上,是的,我会的下次做得更好。谢谢。事实上,即使使用旧式字符串格式(使用“%s”占位符和“%s”),您也不需要对字符串“强制转换”任何内容-在这个问题上,它的工作原理与
str.format()
相同。无论如何,至少这是一个合理的答案,而且解释得很好。@Brunodesshuilliers:编辑,谢谢您的评论。
html = "<p>%s</p> <p>%s</p>" % (I, Age)
html = "<p>{}</p> <p>{}</p>".format(I, Age)