Python 在HTML中传递字符串和整数
我正在写一个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'
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)