как заменить часть строки после определенной подстроки - PullRequest
1 голос
/ 04 июня 2019

с использованием питона и селена. У меня есть несколько URL-адресов в виде строк в списке. однако я хочу иметь возможность заменить часть строки (конец строки) после подстроки в строке.

Я пытался заменить (). однако это только заменяет то, что я заявляю конкретно. Например, эта ссылка:

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

однако числа после 'sku =' и 'planSku' меняются, когда я прохожу список URL-адресов

    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 ]

1 голос
/ 04 июня 2019

Вы можете использовать .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

Вы также можете использовать подстановку регулярного выражения (re module)

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

Но вы должны быть осторожны со специальными символами в вашем ключевом слове и newValue (которые вы можете избежать с помощью re.escape (), если это необходимо).

0 голосов
/ 04 июня 2019

Вы можете использовать URL-адрес в виде строки, например:

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

Внутри for вы можете сделать что-то вроде этого:

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

И затем значения в вашемсписок будет вставлен в строку.'{}' Будет соответствовать значению 'element'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...