使用python组合4个URL部分

2024-09-26 21:50:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想这有一个简单的答案,但我没能破解它。假设你有一个URL,需要分为四个部分:

comp1 = 'www.base.com/'
comp2 = list1   # a list of letters, say "AAA", "BBB", "CCC"
comp3 = list2   # another list, but this time dates: '2019/10/21', '2019/10/20', '2019/10/19'
comp4 = "/example.html"

我尝试了多种不同的方式来组合这些,我知道urllib.parse.urljoin是最好的选择,但它不能超过三个参数:

for i in comp2:
    iter1 = urllib.parse.urljoin(comp1, i)
    print(iter1)  # this pairs the first two components nicely

for j in comp3:
    iter2 = urllib.parse.urljoin(j, comp4)
    print(iter2)  # this just returns '/example.html', and nothing is joined

连接这4个组件的最适合的方式是什么?我试过''.join(),但只需要一个参数。我要做的不仅仅是三次迭代。在R中,我只需在paste0()中猛击我的组件,就可以结束了。你知道吗


Tags: infor参数parseexamplehtml方式urllib
3条回答

偏离你的榜样

你可以这样做:

for x in comp2:
      for y in comp3:
          combine = comp1 + x + y + comp4

我怀疑这并不是你想要的,但如果它真的只是把字符串和列表混在一起,那么这就行了:

comp1 = 'www.base.com/'
comp2 = ["AAA", "BBB", "CCC"]
comp3 = ['2019/10/21', '2019/10/20', '2019/10/19']
comp4 = "/example.html"


url = comp1 + "".join(comp2) + "".join(comp3) + comp4

print (url)

结果:

www.base.com/AAABBBCCC2019/10/212019/10/202019/10/19/example.html

您可以摆弄join中的"",使其在/中折腾,或者为列表中的项使用您想要的任何分隔符。也许你想要AAA/BBB例如。所以你应该改做"/".join([comp2])。你知道吗

只接受一个参数的join处理只接受一个list,但是list可以由一堆东西组成。祝你好运:)

你想使用''.join()是对的,但是你误解了这个论点。。。它应该是任何iterable(列表、元组或类似的)。只需将项直接放入列表或元组中,即可动态创建iterable:

result = ''.join([comp1, comp2, comp3])

当然,这假设列表中的每个项本身就是一个字符串元素。如果comp2comp3已经是列表,那么您可能还需要执行连接以将它们放到您想要的位置:

result = ''.join([
    comp1,
    '/'.join(comp2),
    '/'.join(comp3),
    comp4,
])

如果您使用的是Python的现代版本(不是python2.x),那么还可以使用f-strings很好地格式化字符串:

result = f'www.base.com/{comp2}/{comp3}/example.html'

这里还要注意,如果comp2comp3是列表,则可能需要进行额外的格式化:

result = f'www.base.com/{"/".join(comp2)}/{"/".join(comp3)}/example.html'

在这种情况下,请确保在join字符串上使用的引号与外部f-string上的引号不同,或者正确转义。你知道吗

相关问题 更多 >

    热门问题