gpt4 book ai didi

php - Python 3 标准化 URL

转载 作者:行者123 更新时间:2023-11-30 01:29:09 29 4
gpt4 key购买 nike

好吧,显然 python 3 在 urllib 方面是相当荒谬的。

所以,我有一个像这样格式化的网址,

http_request = "http://localhost/system/index.php/index_file/store?cid={0}&cname={1}&fname={2}&fdir='{3}'"\
.format(client_id, client_name, each[1], each[2])

其中 each[1]each[2] 分别是文件名和文件目录。

因此,通过 print() 生成的 http_request 结果将给出类似这样的结果,

http://localhost/system/index.php/index_file/store? \
cid=90823&cname=John Smith&fname=Sample Document.doc& \
fdir='C:\Users\williamyang\Desktop\Files\90823 Michelle Moore\Sample Document.doc'

(单独的反斜杠的目的只是为了更好地适合这里。实际代码在每行末尾没有单独的反斜杠。)

如果我在浏览器中输入该 URL,那就完全没问题了。 PHP 应用程序通过 $_GET 收到所有索引,然后发送到 MySQL,没有任何问题。

但是如果我让 python 来做,

PHP 告诉我索引 $_GET['fname']$_GET['fdir'] 不存在!多么疯狂啊。好吧,那么,

我尝试了 urllib.parse、urllib 编码和解码、http_request.replace('\\', '/') 以及许多其他内容。

这些都不起作用。

我的教授曾经告诉我,Python 在字符编码方面做了一些有趣的事情。

在所有疯狂且无用的 urllib 解析实验之前,这是我发送 URL 的方式

def getResponseCode(url):        
conn = urllib.request.urlopen((url))
return conn.read()

其中url = http_request

我该如何解决这个问题?

PHP 说 $_GET['fname'] 和 $_GET['fdir'] 不存在

但是当我将自动生成的 http_request 粘贴到浏览器中时,

一切都很好

最佳答案

URL 不应包含空格。您的浏览器将自动对 URL 进行百分比编码,遵循 URL 转义规则,用 %20+ 等内容替换 URL 中不应出现的字符。 Python 不会自动执行此操作;最有可能的是,这种便利性带来了对编程很重要的歧义,但不会打扰普通网络用户。用于 url 转义的 Python 工具是 urllib.quote and urllib.quote_plus ;您可能需要 quote_plus。将 URL 的路径部分传递给 urllib.quote_plus,然后将其粘贴到域名上,这样就可以开始了。

关于php - Python 3 标准化 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17666567/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com