2015-09-01 26 views
2

我想爲我的kolab電子郵件服務器寫出一些基本的python。對於primary_mail,我希望它是第一個姓氏,如jdoe。默認是名字(點)姓。 [email protected]Python語法不適用於電子郵件創建

我已經想出了以下內容:

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

,我想從根本上說[email protected]

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 

當蟒蛇去canonify它,它出現了一些像這樣的龐然大物:

'john[0:1]'[email protected] 

有人可以幫我解決這個問題嗎?我很親密。

編輯:

據kolab文檔,它看起來是這樣的:

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

當然,這不是爲我工作,雖然....

EDIT 2 :

我在錯誤日誌中看到以下內容:

imaps[1916]: ptload completely failed: unable to canonify identifier: 'john'[0:1][email protected] 

回答

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現在等於「[email protected]」。您可以使用大括號定義一個包含命名佔位符的字符串,然後調用format方法使這些佔位符在運行時用適當的值替換。在這裏,我們取first_name的第一個字符並將其轉換爲小寫,也將整個姓氏轉換,並保留域名不變。

您可以在Python 2.7 docs上閱讀有關字符串格式的更多信息。

+0

都能跟得上..只有這樣,它似乎工作是如果我把kolab webadmin中的primary_mail ='%(givenname)s'[0:1]%(surname)s'%(domain)s ...它會正確顯示在該字段中:http :// CL。ly/image/3y0m1b0t1H2N但是如果我使用你的,它只顯示一個@符號。 –

+0

當我使用你的語法:http://cl.ly/image/1v2o131Q3j2u –

0

James Scholes正確地認爲format是一個更好的方法,但是閱讀Kolab文檔時似乎只能給出格式字符串,並且他們在內部使用%樣式格式器,您無法更改它。從 the Kolab 'primary_mail' documentation

primary_mail = %(givenname)s.%(surname)[email protected]%(domain)s 

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

在這種情況下,我們需要修改的格式談話。我們有%(givenname)s,它確保givenname是一個字符串。我們也可以指定最小長度,然後是.,然後是精度。這通常只用於數字,但我們也可以將它用於字符串。下面是一個格式字符串,沒有最小長度,但1個字符的最大長度(精度):

"%(givenname).1s" 

所以你可能要像這樣的字符串:

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

沒有..似乎工作的唯一方法是如果我把primary_mail ='%(givenname)s'[0:1]%(姓氏)s @%(domain)s在kolab webadmin中......它會在字段中正確顯示:http://cl.ly/image/3y0m1b0t1H2N但是如果我使用你的,它只顯示一個@符號。 –

+0

當我使用你的語法時:http://cl.ly/image/1v2o131Q3j2u –

+0

如果他們沒有使用python自己的字符串格式,這將是很難解決的 - 雖然你剛剛說過你的問題的例子是工作,所以也許我錯過了你需要做的事情? –

相關問題