с использованием питона и селена. У меня есть несколько 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'
Вы можете использовать .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 (), если это необходимо).
Вы можете использовать URL-адрес в виде строки, например:
url = 'https://shop.freedommobile.ca/devices/Apple/iPhone_XS_Maxsku={}'
Внутри for вы можете сделать что-то вроде этого:
for element in phonePlanLinksRaw: urlnew = url.format(element)
И затем значения в вашемсписок будет вставлен в строку.'{}' Будет соответствовать значению 'element'.