我有一个像这样的字符串:
downloadFile":"/myportal/ABC/35/audio/182/audio?Id=996\u0026stepNo=0\u0026resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav
我需要将\ u0026(十六进制)更改为& 我什至尝试过->
.replace("\u0026","&")
它没用
答案 0 :(得分:0)
在谈到URL时,请帮一个忙,并使用urllib
,在这里您需要urllib.parse.unquote
import urllib.parse
url = "/myportal/ABC/35/audio/182/audio?Id=996\u0026stepNo=0\u0026resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav"
print(urllib.parse.unquote(url))
如果是Python2.x,请使用import urllib
和urllib.unquote()
。
答案 1 :(得分:0)
尝试此代码!
工作正常。
downloadFile ="/myportal/ABC/35/audio/182/audio?Id=996\u0026stepNo=0\u0026resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav"
print(downloadFile.replace("\u0026","&"))
输出:
/myportal/ABC/35/audio/182/audio?Id=996&stepNo=0&resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav
答案 2 :(得分:0)
也许您可以提供抛出的错误,但是从我看到的情况来看,downloadFile之后的::冒号上似乎有引号,这可能会导致错误,现在您可以使用反斜杠()进行转义像这样:
yourVar = "downloadFile\":\"/myportal/ABC/35/audio/182/audio?Id=996\u0026stepNo=0\u0026resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav"
yourVar.replace("\u0026","&")
根据我的尝试,这应该没问题。
您可以选择用'单引号定义变量,因为这可以使您的当前字符串正常工作,因为冒号周围的双引号“将被忽略:
yourVar = 'downloadFile":"/myportal/ABC/35/audio/182/audio?Id=996\u0026stepNo=0\u0026resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav'
yourVar.replace("\u0026","&")
这应该工作正常。 For reference I have added what I ran in my console since the code worked fine for me
如果问题仍然存在,请发布您所运行的内容以及收到的错误,我一定会进一步调查
有一个好:)
答案 3 :(得分:0)
正如我的评论所说,我猜“ \ u0026”是一个转义的字符串。
也就是说,实际输入应类似于
a = "\\u0026"
带有两个反斜杠以输入一个真实的“ \”。
然后,我们可以将json.loads
用作re.escape
的棘手反向函数,例如:
import json
json.loads("{\"downloadFile\":\"/myportal/ABC/35/audio/182/audio?Id=996\\u0026stepNo=0\\u0026resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav\"}")
# output:
# {'downloadFile': '/myportal/ABC/35/audio/182/audio?Id=996&stepNo=0&resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav'}
或将其包装为函数:
def deescape(escaped):
return str(json.loads("{\"s\":\"" + escaped + "\"}"))[7 : -2]
deescape("\\u0026") # return '&'
更新:如果escaped
包含“:”,则此解决方案不适用。真正的解决方案should be:
# Python 2
def deescape(escaped)
return escaped.decode('string_escape')
# Python 3
def deescape(escaped)
return escaped.encode().decode('unicode_escape')
答案 4 :(得分:0)
没有一个对我有用的唯一方法是使用-> \ u0026 note double \
myStr.replace("\\u0026","&")