我正在從python字符串生成HTML id屬性。有沒有可以將字符串轉換爲有效的ID的庫?根據https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id,id屬性不能有空格,兼容性應該只有少數非字母數字字符。庫將python字符串轉換爲有效的HTML標識符?
如果有所作爲,我使用Jinja2模板引擎。
澄清更新:我意識到我可以編寫自己的代碼,但我一直在尋找已經在使用的東西,最重要的是正確的。
我正在從python字符串生成HTML id屬性。有沒有可以將字符串轉換爲有效的ID的庫?根據https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id,id屬性不能有空格,兼容性應該只有少數非字母數字字符。庫將python字符串轉換爲有效的HTML標識符?
如果有所作爲,我使用Jinja2模板引擎。
澄清更新:我意識到我可以編寫自己的代碼,但我一直在尋找已經在使用的東西,最重要的是正確的。
我不知道是否有一個庫,但你可以只從包括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
,如果你這可能是有用的提及你的目標是在這裏。你打算如何使用這些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
你有沒有考慮寫一個自己?就像'id =(c for c in s if c.isalnum())。split()。join(「 - 」)'應該可以讓你獲得大部分的路徑。你可以將它實現爲Jinja2過濾器。 – 2015-01-20 22:39:29