-1

我正在为测试目的生成虚拟电子邮件地址,因此希望以下代码能够工作

return "test_%@test.tm"% counter();

但它不起作用,似乎有一些关于 @ 的特殊内容,无法@在字符串中包含。

编辑

有人可以告诉我为什么输出在此示例中没有“电子邮件”属性/键 - https://gist.github.com/4505055

顺便说一句,我是 python 新手

编辑

我的错误,电子邮件 attr 丢失,抱歉 :(

4

5 回答 5

3

看来您忘记了字符串替换字符 %s

return "test_%s@test.tm" % counter()
于 2013-01-10T19:13:03.527 回答
2

那是因为字符串中百分号后面的字符应该指定您要插入的值类型。例如,做

"test_%i@test.tm" % 1

...会告诉 Python 你想在 '%i' 所在的位置插入一个整数。但是,'%@' 不是一个公认的字符串插入东西,所以它不起作用。更多信息

做同样事情的一个稍微更健壮的方法可能是这样的:

"test_{thing}@test.tm".format(thing=counter())

...或者...

"test_{0}@test.tm".format(counter())

更多信息

于 2013-01-10T19:13:23.563 回答
1

@ 没有什么特别之处。您似乎在进行字符串替换,但您提供了要替换的无效值。

试试这个:

return "test_%s@test.tm"% counter();
于 2013-01-10T19:13:21.720 回答
1

你有一个'%'字符,@后面有你的符号。这不是有效的字符串转换类型。

请参阅: http ://docs.python.org/2/library/stdtypes.html#string-formatting-operations

也许你的意思是:'test_%s@test.tm' % counter()

(另外,您不需要用分号终止语句;)

于 2013-01-10T19:13:45.100 回答
1

您在字符串中的百分号后忘记了格式化程序。

return "test_%s@test.tm"% counter()

此外,您不必在 python 语句的末尾添加分号。事实上,python 不会抱怨它,因为它是有效的,但不推荐。

于 2013-01-10T19:15:43.633 回答