看了各种帖子,好像是JavaScript的unescape()相当于 Pythons urllib.unquote() ,但是当我测试两者时,我得到不同的结果:
unescape('%u003c%u0062%u0072%u003e');
输出: <br>
import urllib
urllib.unquote('%u003c%u0062%u0072%u003e')
输出: %u003c%u0062%u0072%u003e
我希望 Python 也返回 <br> .关于我在这里缺少什么的任何想法?
谢谢!
最佳答案
%uxxxx 是 non standard URL encoding scheme urllib.parse.unquote() (Py 3)/urllib.unquote() (Py 2) 不支持。
它只是 ECMAScript ECMA-262 第三版的一部分;该格式被 W3C 拒绝,并且从未成为 RFC 的一部分。
您可以使用正则表达式来转换此类代码点:
try:
unichr # only in Python 2
except NameError:
unichr = chr # Python 3
re.sub(r'%u([a-fA-F0-9]{4}|[a-fA-F0-9]{2})', lambda m: unichr(int(m.group(1), 16)), quoted)
这会解码 %uxxxx 和 %uxx 形式的 ECMAScript 3rd ed 可以解码。
演示:
>>> import re
>>> quoted = '%u003c%u0062%u0072%u003e'
>>> re.sub(r'%u([a-fA-F0-9]{4}|[a-fA-F0-9]{2})', lambda m: chr(int(m.group(1), 16)), quoted)
'<br>'
>>> altquoted = '%u3c%u0062%u0072%u3e'
>>> re.sub(r'%u([a-fA-F0-9]{4}|[a-fA-F0-9]{2})', lambda m: chr(int(m.group(1), 16)), altquoted)
'<br>'
但如果可能,您应该避免完全使用编码。
关于Javascript unescape() 与 Python urllib.unquote(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23158822/
我在使用FasterCSV和我的rakedb:seeds迁移时遇到问题。我收到错误:“rake中止!未加引号的字段不允许\r或\n(第2行)”在以下seeds.rb数据上:require'csv'directory="db/init_data/"file_name="gardenzing020812.csv"path_to_file=directory+file_nameputs'LoadingPlantrecords'#Pre-loadallPlantrecordsn=0CSV.foreach(path_to_file)do|row|Plant.create!:name=>row[1
看了各种帖子,好像是JavaScript的unescape()相当于Pythonsurllib.unquote(),但是当我测试两者时,我得到不同的结果:在浏览器控制台中:unescape('%u003c%u0062%u0072%u003e');输出:在Python解释器中:importurlliburllib.unquote('%u003c%u0062%u0072%u003e')输出:%u003c%u0062%u0072%u003e我希望Python也返回.关于我在这里缺少什么的任何想法?谢谢! 最佳答案 %uxxxx是nonst
这个问题在这里已经有了答案:HTMLattributewith/withoutquotes(6个答案)关闭8年前。对于某些html属性,我可以在值周围使用引号,也可以不使用引号:比如我可以做或者这两种方式有什么区别吗?哪种做事方式更传统?
这个问题在这里已经有了答案:HTMLattributewith/withoutquotes(6个答案)关闭8年前。对于某些html属性,我可以在值周围使用引号,也可以不使用引号:比如我可以做或者这两种方式有什么区别吗?哪种做事方式更传统?
1.报错:com.fasterxml.jackson.core.JsonParseException:Illegalunquotedcharacter((CTRL-CHAR,code9)):hastobeescapedusingbackslashtobeincludedinstringvalueat[Source:(PushbackInputStream);line:2,column:21]2.导致原因:测试时是使用swagger测试接口的,下面的bin字段的值是复制过来的,bin的值表面上看是有空格的存在,其实是一些特殊字符,删除掉特殊字符就可以解决报错了。向接口中传递json如下{"bin
1.报错:com.fasterxml.jackson.core.JsonParseException:Illegalunquotedcharacter((CTRL-CHAR,code9)):hastobeescapedusingbackslashtobeincludedinstringvalueat[Source:(PushbackInputStream);line:2,column:21]2.导致原因:测试时是使用swagger测试接口的,下面的bin字段的值是复制过来的,bin的值表面上看是有空格的存在,其实是一些特殊字符,删除掉特殊字符就可以解决报错了。向接口中传递json如下{"bin