我写了一个python代码:
import re
url = "www.google.com";
line = "../../asyouwish.html"
num = re.sub(r'(\.\.\/)*', url, line)
print ("Final : ", num)
我的意图是用提供的网址值替换../(任意次数)。 但是我没有得到正确的输出。我想要的输出是“www.google.com/asyouwish.html”。
我得到的是:
Final : www.google.comawww.google.comswww.google.comywww.google.comowww.google.
comuwww.google.comwwww.google.comiwww.google.comswww.google.comhwww.google.com.w
ww.google.comhwww.google.comtwww.google.commwww.google.comlwww.google.com
任何人都可以帮助我,因为我出错的地方! 感谢。
答案 0 :(得分:5)
*
表示出现0次或更多次。 +
表示1或更多。您希望匹配至少出现一次../
。因此,将*
更改为+
:
import re
url = "www.google.com/"
line = "../../asyouwish.html"
num = re.sub(r'([.]{2}/)+', url, line)
print ("Final : ", num)
产量
('Final : ', 'www.google.com/asyouwish.html')
由于re.sub
会移除1个或更多'../'
,因此您需要在url
之后添加正斜杠。上面,我已经向url
本身添加了正斜杠。如果url
没有正斜杠,您可以(作为替代方案)添加
num = re.sub(r'([.]{2}/)+', url+'/', line)
如果匹配0次或更多次匹配r'([.]{2}/)*'
,之间的每个位置 line
中的字符都匹配该模式,那么您可以在每个空隙。
In [9]: x = 'www.google.comawww.google.comswww.google.comywww.google.comowww.google.comuwww.google.comwwww.google.comiwww.google.comswww.google.comhwww.google.com.www.google.comhwww.google.comtwww.google.commwww.google.comlwww.google.com'
In [13]: x.split('www.google.com')
Out[13]: ['', 'a', 's', 'y', 'o', 'u', 'w', 'i', 's', 'h', '.', 'h', 't', 'm', 'l', '']
答案 1 :(得分:0)
使用类似
的内容url = "www.google.com";
line = "../../asyouwish.html"
link_part = line.split("/")
final_url = url + "/" + link_part[-1]