【发布时间】:2022-01-04 15:26:57
【问题描述】:
我有一个 file.txt,其中包含以下网址:
asd.com/abc.xyz?b=21
asd.com/abc.xyz?a=1&c=2
asd.com/abc.xyz?a=12&d=21
asd.com/abc.xy?b=21
asd.com/abc.xy?a=1&c=2
asd.com/abc.xy?a=12&d=21
我需要这样的结果:
asd.com/abc.xyz?a=&b=&c=&d=
asd.com/abc.xy?a=&b=&c=&d=
可以看出,我希望特定 url 的每个参数只链接到一个。
我写了一个代码来分隔?并在之后删除所有内容?然后删除了重复项,但我的代码完全从网址中删除了 a、b、c 和 d
lines_seen = set() # holds lines already seen
outfile = open("out.txt", "w")
actualout = open("output.txt", "w")
for line in open("txt", "r"):
line = line.split("?", 1)[0]
outfile.write(line+"\n")
outfile.close()
for line in open("out.txt", "r"):
if line not in lines_seen: # not a duplicate
actualout.write(line)
lines_seen.add(line)
actualout.close()
【问题讨论】:
-
当一个参数有两个值时,如
"asd.com/abc.xyz?a=1&c=2", "asd.com/abc.xyz?a=12&d=21",你如何决定保留哪个值?你想要a=1还是a=12? -
我实际上会用通配符替换所有值以更好地匹配,或者只使用第一个值,特定 url 中的不同参数是我正在寻找的 :)
标签: python-3.x regex sorting arraylist split