gpt4 book ai didi

c# - 用小写字母进行 Python URL 编码?

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:15 24 4
gpt4 key购买 nike

使用 urllib.parse.quote 时编码全部大写。我的代理服务器是用 C# 编写的,除了要小写的编码。

例如,<编码(UTF-8)为%3C .但是,C# 的 WebUtility.UrlDecode(request.RawUrl)除所有小写字母外:%3c .结果是两个系统无法相互通信。

C# ASP.NET 确实有另一个函数可以处理大写编码。此功能不再存在。 (已退休)Link to used C# function

import urllib
my_text="?address=This is an Address!&name=This is a test of it all!<.>"
my_url=urllib.parse.quote(my_text)
my_url

我希望在 python 端用小写字母对 URL 进行编码。关于如何实现这一目标的任何想法?

另一种可能的解决方案是在 C# 端用大写字母解码 URL,但似乎没有用于此的函数。 :(

最佳答案

I'm hoping to encode the URL on the python side with lowercase letters. Any idea on how to make this happen?

我们有正则表达式,它是一种强大的武器。试试这个:

import re
import urllib.parse # I'm curious that you just imported `urllib`.


my_text = "?address=This is an Address!&name=This is a test of it all!<.>"
my_url = re.sub(r'%[0-9A-Z]{2}', # pattern
lambda matchobj: matchobj.group(0).lower(), # function used to replace matched string
urllib.parse.quote(my_text)) # input string
my_url

输出是:

%3faddress%3dThis%20is%20an%20Address%21%26name%3dThis%20is%20a%20test%20of%20it%20all%21%3c.%3e

与原来的对比:

%3Faddress%3DThis%20is%20an%20Address%21%26name%3DThis%20is%20a%20test%20of%20it%20all%21%3C.%3E

这将满足您的要求。


如果要这样处理多个URL,最好使用regular expression object :

import re
import urllib.parse


my_re = re.compile(r'%[0-9A-Z]{2}') # pattern

my_text = "?address=This is an Address!&name=This is a test of it all!<.>"
my_url = my_re.sub(lambda matchobj: matchobj.group(0).lower(), # function used to replace matched string
urllib.parse.quote(my_text)) # input string
my_url

文档:

关于c# - 用小写字母进行 Python URL 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56277719/

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