繁体   English   中英

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

[英]error sending an argument with an ampersand character in the value in python?

我在 python 中处理 2 个脚本。 第一个需要向第二个脚本发送一个值或一个参数。 现在的问题是,每当我将值发送到第二个脚本时,第二个脚本都无法获取我发送的所有参数。 我发送的值是一个 URL,它包含一个 & 符号。 我注意到它一直在降低 & 的第一次出现的值。

例如,让我们坐下,我需要通过这个:

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

第二个脚本只会收到这个:

http://www.google.com/jfljflfjej

我需要做什么才能获得正确的值? 还有哪些其他角色有与此相同的问题?

您需要在整个值周围加上引号,包括 & 号,因为它是一个特殊的 shell 字符。 或者,您可以通过在它前面放置一个反斜杠来逃避它:

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

& 符号向 shell 发出信号,您希望在后台模式下将命令置于该点。

以下任何字符在 shell 中都是特殊的

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

这些需要以相同的方式进行转义; 使用反斜杠或在值周围加上引号。

也许现在回答你有点晚了,但我遇到了同样的问题,我找到了一个简单的解决方案。

您可以使用函数 replace() 将每个 & 符号替换为 HTML '%26' 中的代码,如下所示。

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

结果:

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

这是编码的问题。

在 Python 3 中:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM