我正在从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