2015-01-20 158 views
-2

我正在從python字符串生成HTML id屬性。有沒有可以將字符串轉換爲有效的ID的庫?根據https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id,id屬性不能有空格,兼容性應該只有少數非字母數字字符。庫將python字符串轉換爲有效的HTML標識符?

如果有所作爲,我使用Jinja2模板引擎。

澄清更新:我意識到我可以編寫自己的代碼,但我一直在尋找已經在使用的東西,最重要的是正確的。

+1

你有沒有考慮寫一個自己?就像'id =(c for c in s if c.isalnum())。split()。join(「 - 」)'應該可以讓你獲得大部分的路徑。你可以將它實現爲Jinja2過濾器。 – 2015-01-20 22:39:29

回答

0

我不知道是否有一個庫,但你可以只從包括AZ,az,0-9和._-刪除字符間距,可被允許這樣

import re 
htmltag = re.sub('[^(a-z)(A-Z)(0-9)._-]', '', pythonstring) 

if htmltag=='': 
    print "no good" 
else: 
    print 'proposed tag', htmltag 
0

,如果你這可能是有用的提及你的目標是在這裏。你打算如何使用這些ID?您需要注意您獲取字符串的位置,以便根據需要確保它們在轉換/ sanitisation之後的頁面上唯一。

這與發佈的其他解決方案類似,但也允許使用下劃線,短劃線和句點。這也使得確保標識符以字母開頭(注意,這將失敗,並返回一個空字符串,如果該標識符不包含任何ASCII字母) -

import string 

safe = string.letters + string.digits + '_-.' 

def string_to_html_id(s): 
    s = ''.join([letter for letter in s if letter in safe]) 
    while not s[0] in string.letters: 
     s = s[1:] # Remove the first character until it starts with a letter 
    return s 

print(string_to_html_id(r'_Hello fsd-klj @(*)^&*sf.kj 34_54')) # prints Hellofsd-kljsf.kj34_54