python 中是否有一个函数或包可用于根据确保它可以用作 CSS string 对字符串进行编码? ?它需要转义所有单引号和双引号以及反斜杠,并用 \A
替换换行符。
例如:
This is "it", isn't\
it?
应转换为
This is \"it\", isn't\\\A it?
非 ASCII 字符可以保留不变,如果它们被打印为 utf-8。
最佳答案
查看规则,所有需要转义的是引号(单引号和双引号)和换行符。该标准没有提到它,但这可能也必须扩展到反斜杠字符(通过检查 MDN on the <string>
data type 确认)。
正则表达式可以做到这一点:
re.sub(r'''['"\n\\]''', lambda m: '\\{:X} '.format(ord(m.group())), inputstring)
这会将 4 个字符转义为明确的十六进制转义; {escape}
macro uses the space after the escape to delineate the escape from any content following it .这是最实用的选择;它会产生一个有效的 CSS 字符串值。
演示:
>>> import re
>>> inputstring = '''This is "it", isn't\nit?'''
>>> re.sub(r'''['"\n\\]''', lambda m: '\\{:X} '.format(ord(m.group())), inputstring)
'This is \\22 it\\22 , isn\\27 t\\A it?'
>>> print(re.sub(r'''['"\n\\]''', lambda m: '\\{:X} '.format(ord(m.group())), inputstring))
This is \22 it\22 , isn\27 t\A it?
关于python - 使用 python 以 CSS 方式编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25699819/