2015-01-20 165 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