Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带十六进制字符串的python更改\u0026为&;_Python_Hex - Fatal编程技术网

带十六进制字符串的python更改\u0026为&;

带十六进制字符串的python更改\u0026为&;,python,hex,Python,Hex,我有这样一个字符串: downloadFile":"/myportal/ABC/35/audio/182/audio?Id=996\u0026stepNo=0\u0026resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav 我需要将\u0026(十六进制)更改为& 我甚至试过这个--> 当谈到URL时,它不起作用,请帮个忙并使用urllib,这里是您需要的 如果它是Python2.x,请使用import urllib和urllib

我有这样一个字符串:

downloadFile":"/myportal/ABC/35/audio/182/audio?Id=996\u0026stepNo=0\u0026resource=996-0-dde82d48-3097-4835-a1e4-30602c460fd7-1.wav
我需要将\u0026(十六进制)更改为& 我甚至试过这个-->


当谈到URL时,它不起作用,请帮个忙并使用
urllib
,这里是您需要的


如果它是Python2.x,请使用
import urllib
urllib.unquote()

试试这段代码

它很好用

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

也许您可以提供抛出的错误,但是从我看到的情况来看,下载文件后,:冒号上似乎有“引号”,这可能会导致错误,现在您可以使用反斜杠()将其转义,如下所示:

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","&")
这应该很好用。

如果问题仍然存在,请发布您运行的内容和收到的错误,我一定会进一步调查


有一个好的:)

正如我的评论所说,我猜“\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 '&'
更新:如果
转义的
包含“:”,则此解决方案不适用。真正的解决办法是:


没有起作用唯一对我起作用的是使用-->\u0026双音符\

myStr.replace("\\u0026","&")

请展示你在这方面的努力。使用相同的代码,我得到了正确的结果。我猜原始输入类似于
a=“\\u0026”
,用两个反斜杠输入一个实“\”,OP要求使用反向函数
re.escape
。但是我找不到一个好的解决方案。如果我的猜测是对的,那么此时所有的答案都是错误的,因为如果我们输入
a=“\u0026”
,那么
a
现在是“&”,一个正常的转义,不需要转换。可能是
def deescape(escaped):
    return str(json.loads("{\"s\":\"" + escaped + "\"}"))[7 : -2]

deescape("\\u0026") # return '&'
# Python 2
def deescape(escaped)
    return escaped.decode('string_escape')

# Python 3
def deescape(escaped)
    return escaped.encode().decode('unicode_escape')
myStr.replace("\\u0026","&")