centos 在python中发送值中带有&字符的参数时出错?

ars1skjm  于 2022-11-07  发布在  Python
关注(0)|答案(3)|浏览(124)

我正在处理两个脚本在python。第一个需要发送一个值或参数到第二个脚本。现在的问题是,每当我发送值到第二个脚本,第二个脚本不能得到我发送的所有参数。我发送的值是一个URL,它包含一个和。我注意到,它不断削减的值,以第一次出现的&。
让我们以SAT为例,我需要传递这个:
http://www.google.com/jfljflfjej&12345
第二个脚本将只接收以下内容:
http://www.google.com/jfljflfjej
我需要做些什么才能捕捉到正确的值?2还有什么其他的字符有和这个一样的问题?

rjjhvcjd

rjjhvcjd1#

您需要用引号将整个值括起来,包括&号,因为它是一个特殊的shell字符。或者,您可以在&号前面加上一个反斜杠,从而只对它进行转义:

http://www.google.com/jfljflfjej\&12345

&符号向shell发出信号,表示您希望在后台模式下将命令放到该位置。
下列任何字符都是special in a shell

\ ' " ` < > | ; <Space> <Tab> <Newline> ( ) [ ] ? # $ ^ & * =

这些需要以同样的方式进行转义;请使用反斜杠或用引号将值括起来。

9jyewag0

9jyewag02#

也许现在回答你有点晚了,但我也遇到了同样的问题,我找到了一个简单的解决办法。
您可以使用replace()函数将HTML '%26'中的每个&符号替换为它们的代码,如下所示。

url = http://www.google.com/jfljflfjej&12345
print url.replace('&', '%26')

结果是:

http://www.google.com/jfljflfjej%2612345

这是编码的问题。

wgxvkvu9

wgxvkvu93#

在Python 3中:

import urllib.parse
url = urllib.parse.quote("http://www.google.com/jfljflfjej&12345")

相关问题