如何在特定子字符串后替换字符串的一部分

时间:2019-06-04 16:48:06

标签: python arrays string replace

使用python和selenium。我在列表中有多个URL作为字符串。但是我希望能够在字符串的子字符串之后替换字符串的一部分(字符串的结尾)。

我尝试了replace()。但是,这只能代替我具体说明的内容。例如,此链接:

https://shop.freedommobile.ca/devices/Apple/iPhone_XS_Max?sku=190198786135&planSku=Freedom%20Big%20Gig%2015GB

但是,当我浏览URL列表时,'sku ='和'planSku'之后的数字会发生变化

    phonePlanLinksRaw = driver.find_elements_by_xpath("//div[starts-with(@class,'deviceListItem')]/a")

    phonePlanLinks = [] #contains the links to all phones



    for element in phonePlanLinksRaw:
        phonePlanLinks.append(str(element.get_attribute('href')))

    phonePlanLinks.pop() #removes bring your own phone

# prints all links
    numLink = 1
    for element in range(len(phonePlanLinks)):
        print("phone " + str(numLink) + " : " + phonePlanLinks[element])
        numLink += 1

我希望能够在字符串中的某个点之后在URL之外的子字符串中交换子字符串。

例如: https://shop.freedommobile.ca/devices/Apple/iPhone_XS_Max?sku=190198786135&planSku=Freedom%20Big%20Gig%2015GB

'https://shop.freedommobile.ca/devices/Apple/iPhone_XS_Max?sku=190198786135&planSku='停留

然后我希望能够在'planSku'之后附加我自己的子字符串

2 个答案:

答案 0 :(得分:1)

您可以将.split()与您的关键字用作分隔符,然后将关键字和值连接到第一部分:

url = "https://shop.freedommobile.ca/devices/Apple/iPhone_XS_Max?sku=190198786135&planSku=Freedom%20Big%20Gig%2015GB"
keyword  ="planSku="
newValue ="MyValue"
newUrl   =url.split(keyword,1)[0]+keyword+newValue
print(newUrl)
# https://shop.freedommobile.ca/devices/Apple/iPhone_XS_Max?sku=190198786135&planSku=MyValue

您还可以使用正则表达式替换(重新模块)

import re
newUrl = re.sub(f"({keyword})(.*)",f"\\g<1>{newValue}",url)

但是您必须小心使用关键字和newValue中的特殊字符(如果需要,可以使用re.escape()对其进行转义)。

答案 1 :(得分:0)

您可以将URL用作这样的字符串:

url = 'https://shop.freedommobile.ca/devices/Apple/iPhone_XS_Maxsku={}'

在for中,您可以执行以下操作:

for element in phonePlanLinksRaw:
    urlnew = url.format(element)

然后,列表中的值将输入到字符串中。 “ {}”将适合“ element”值。