电子邮件创建的Python语法不正确

时间:2015-09-01 23:19:45

标签: python python-2.7 python-3.x

我正在尝试为我的kolab电子邮件服务器写出一些基本的python。对于primary_mail,我希望它是第一个姓氏初始名,例如jdoe。默认值是名字(点)姓氏。 john.doe@domain.com

我提出了以下建议:

    primary_mail ='%(givenname)s'[0:1]%(surname)s@%(domain)s 

我想基本上说jdoe@domain.com

givenname would be someone's full name. (i.e John)
surname would be someone's last name. (i.e Doe)
domain is the email domain. domain.com

当python进行封装时,会出现一些像这样的mumbo jumbo:

    'john[0:1]'doe@domain.com

有人可以帮我解决这个问题吗?我很亲密。

编辑:

根据kolab文档,它看起来像是:

"{0}@{1}": "format('%(uid)s', '%(domain)s')"

这当然对我不起作用......

编辑2:

我在错误日志中收到以下内容:

imaps[1916]: ptload completely failed: unable to canonify identifier: 'john'[0:1]doe@domain.com

2 个答案:

答案 0 :(得分:0)

字符串格式是迄今为止最简单,最易读和首选的方法:

first_name = 'John'
surname = 'Smith'
domain = 'company.com'
primary_mail = '{initial}{surname}@{domain}'.format(initial=first_name[0].lower(), surname=surname.lower(), domain=domain)

primary_mail现在等于'jsmith@company.com'。您可以在大括号中定义包含命名占位符的字符串,然后调用format方法以在运行时将这些占位符替换为适当的值。在这里,我们取first_name的第一个字符并将其转换为小写,也转换整个姓氏,并保持域名不变。

您可以在Python 2.7 docs了解有关字符串格式的更多信息。

答案 1 :(得分:0)

詹姆斯·斯科尔斯是对的​​,format是一种更好的方法,但是阅读Kolab文档似乎只能给出格式字符串,并且他们在内部使用%样式格式化程序,你无法改变的地方。从 the Kolab 'primary_mail' documentation

primary_mail = %(givenname)s.%(surname)s@%(domain)s

The equivalent of the following Python is then executed:
primary_mail = "%(givenname)s.%(surname)s@%(domain)s" % {
    "givenname": "Maria",
    "surname": "Moller",
    "preferredlanguage": "en_US"
}

在这种情况下,我们需要格式化对话的修饰符。我们有%(givenname)s,它确保givenname是一个字符串。我们还可以指定最小长度,然后是.,然后是精度。这通常只用于数字,但我们也可以用它作为字符串。这是一个格式字符串,没有最小长度,但最大长度(精度)为1个字符:

"%(givenname).1s"

所以你可能想要一个像这样的字符串:

"%(givenname).1s%(surname)@%(domain)"