Php Python3规范化URL

Php Python3规范化URL,php,python,mysql,web-applications,Php,Python,Mysql,Web Applications,好的,显然python 3在urllib方面是非常荒谬的 所以,我有一个像这样的url格式 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]和

好的,显然python 3在urllib方面是非常荒谬的

所以,我有一个像这样的url格式

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_请求的结果会给出如下结果:

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应用程序通过$\u GET接收所有索引,然后转到MySQL,没有问题

但如果我让python来做

PHP告诉我索引
$\u GET['fname']
$\u GET['fdir']
不存在!!!真是疯了。好吧,那么

我尝试了从urllib.parse、urllib编码和解码、
http\u request.replace(“\\\”、“/”)
以及其他许多方法

这些都不管用

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

下面是我如何发送我的URL,在所有疯狂和无用的urllib解析实验之前

def getResponseCode(url):        
    conn = urllib.request.urlopen((url))
    return conn.read()
其中
url=http\u请求

我怎样才能着手解决这个问题

PHP说,
$\u GET['fname']和$\u GET['fdir']
不存在

但当我将自动生成的http_请求粘贴到浏览器中时


一切正常

URL不应包含空格。您的浏览器将自动对URL进行百分比编码,按照URL转义规则,将URL中不应包含的字符替换为
%20
+
。Python不会自动执行此操作;最有可能的是,这种便利性引入了对编程很重要的歧义,但不会打扰普通的web用户。用于url转义的Python工具有:;您可能需要
quote\u plus
。将URL的路径组件传递到
urllib.quote\u plus
,然后再将其粘贴到域名,这样您就可以开始了。

python 2的解决方案:

python 3的解决方案:

Ma摇摇晃晃的解决方案>

在从os.walk()读取目录之后,立即执行var.replace(“,”))

最后,


$var=str_replace(“”,“”,$_GET['var')

你能
打印报告(url)吗
在发送它并查看输出内容之前?
'http://localhost/system/index.php/index_file/store?cid=90823&cname=Michelle Moore&fname=Sample Document.doc&fdir='C:\\Users\\williamyang\\Desktop\\Forms\\90823 Michelle Moore\\Sample Document.doc'
对于双反斜杠,我无能为力。Python 3拒绝我这么做。我在某个地方读到,双反斜杠被解释为单正斜杠。我想这可能就是问题所在。replace(“\\\”、“/”)或replace(“\\\\”、“/”)工作使用os.WACK()生成目录。因此反斜杠不,反斜杠应该没问题。这只是Python对repr的反斜杠进行了转义,因为否则您将无法判断“\n”是换行符还是反斜杠加“n”。