如何更改此url中的多个参数值:https://google.com/?test=sadsad&again=tesss&dadasd=asdaas
你可以看到我的代码:我可以改变2的值!你知道吗
这是响应https://google.com/?test=aaaaa&dadasd=howwww
again
参数不在响应中!如何更改值并将其添加到url?你知道吗
def between(value, a, b):
pos_a = value.find(a)
if pos_a == -1: return ""
pos_b = value.rfind(b)
if pos_b == -1: return ""
adjusted_pos_a = pos_a + len(a)
if adjusted_pos_a >= pos_b: return ""
return value[adjusted_pos_a:pos_b]
def before(value, a):
pos_a = value.find(a)
if pos_a == -1: return ""
return value[0:pos_a]
def after(value, a):
pos_a = value.rfind(a)
if pos_a == -1: return ""
adjusted_pos_a = pos_a + len(a)
if adjusted_pos_a >= len(value): return ""
return value[adjusted_pos_a:]
test = "https://google.com/?test=sadsad&again=tesss&dadasd=asdaas"
if "&" in test:
print(test.replace(between(test, "=", "&"), 'aaaaa').replace(after(test, "="), 'howwww'))
else:
print(test.replace(after(test, "="), 'test'))
谢谢!你知道吗
有必要从斯卡奇开始吗?如果没有,请使用已经包含在vanilla Python中的urllib。你知道吗
我会使用
urllib
,因为它为您处理这个问题。你知道吗首先让我们把URL分解一下。你知道吗
然后让我们隔离查询元素。你知道吗
现在让我们更新一些元素。你知道吗
现在我们应该把它编码回正确的格式。你知道吗
最后让我们把整个网址重新组合起来。你知道吗
从你的代码看来,你可能是相当新的编程,所以首先祝贺你已经尝试解决你的问题。你知道吗
正如您所料,有些您可能还不知道的语言特性可以帮助您解决这样的问题。(也有专门用于解析URL的库,但请指出,这些库对Python的发展没有多大帮助—如果您只是想完成一些工作,它们可能是天赐良机)。你知道吗
因为这个问题有点不清楚(别担心,我只会说英语和写英语,所以你比我先回答),我会尽量解释一个更简单的方法来解决你的问题。从你的代码的最后一块我明白你的意图是:
你的代码是一个公平的尝试(在我认为你想做的)。我希望下面的讨论能对你有所帮助。首先,最初将
url
设置为示例。你知道吗虽然代码处理多个或一个参数,但它根本不处理任何参数。这可能重要,也可能不重要,但我喜欢program defensively,过去犯了太多愚蠢的错误。此外,通过消除“边缘情况”(一般代码流无法处理的情况),及早检测该情况简化了剩余的逻辑。如果我在写一个函数(当你想重复操作时很好),我会从以下内容开始
我跳过了这个,因为我知道示例字符串是什么,并且我没有编写函数。一旦你知道有争论,你就可以很容易地用
split
的第二个参数是另一个防御措施,告诉它忽略除第一个问号以外的所有问题。因为我们知道至少有一个,这就保证了结果中总是有两个元素,并且Python不会抱怨在该赋值中有不同数量的名称作为值。让我们确认他们的价值观:现在我们只有参数了,我们可以把它们分成一个列表:
现在可以创建键、值对的列表:
在这一点上,您可以做任何适当的操作,比如删除元素、更改值、更改键等等。你可以从它们中创建一个字典,但是要注意重复的键。我假设您可以更改
kv_pairs
以反映您想要的最终URL。你知道吗一旦进行了必要的更改,将返回值放回一起就相对简单了:我们必须在每个键和值之间放置一个
"="
,然后在每个结果字符串之间放置一个“&;”,然后用“?”连接这些内容。一步一个脚印:相关问题 更多 >
编程相关推荐