Как заменить / заменить часть URL переменной, используя Python / Regex - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь заменить часть следующего URL строкой из переменной: https://somedomain.eu/api/one/some/2018/05/data Как я могу исключить некоторые группы и использовать только одну.

Вот что я сделал:

def change(var_data):
  var = str(var_data) // for example: 11
  url = 'https://somedomain.eu/api/one/some/2018/05/data'
  url2 = re.sub(r'(\d\d)', var, url)
  print(url2)

Печать выглядит так: https://somedomain.eu/api/one/some/1111/11/data и это неправильно, потому что мне нужно изменить только 05 to 11, а не 2018 to 1111

другая версия:

data_url_2 = re.sub(r'.+/(\d\d)/.+', month, data_url)
print(data_url_2)  

print = '11'

Я думал о том, как найти 3 группы и исключить первую и третью:

data_url_2 = re.sub(r'(.+/\d\d\d\d)(\d\d)(/.+)', month, data_url)

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

В одну сторону без регулярных выражений

def change(var_data):
  var = str(var_data)
  url = 'https://somedomain.eu/api/one/some/2018/05/data'
  url1 = url.split('/')
  url2 = '/'.join(url1[:-2] + [var] + [url1[-1]])
  print(url2)

change('11')
#https://somedomain.eu/api/one/some/2018/11/data
0 голосов
/ 31 марта 2019

Вероятно, не нужно регулярное выражение, но давайте все равно сделаем это.

>>> import re

>>> url = 'https://somedomain.eu/api/one/some/2018/05/data'


>>> re.sub('/[\d]{2}/', '/11/', url)
'https://somedomain.eu/api/one/some/2018/11/data'


>>> re.sub('(?<=/)[\d]{2}(?=/)', '11', url)
'https://somedomain.eu/api/one/some/2018/11/data'

.

.

Я думал о том, как найти 3 группы и исключить первую и третью:

Что?

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