Как можно заменить пробелы на дефис и наоборот?

Как можно заменить пробелы на дефисы в URL-адресе без изменения GET-параметров и сохранения их в исходной форме при обратном преобразовании?
  • 22 сентября 2023 г. 9:17
Ответы на вопрос 3
Для замены пробелов на дефисы в строке можно использовать метод replace() в Python:

``` python
string = "Пример строки с пробелами"
new_string = string.replace(" ", "-")
print(new_string)
```

Результат:

```
Пример-строки-с-пробелами
```

Для замены дефисов на пробелы можно использовать тот же метод replace(), но в этом случае передать первый аргумент "-":

``` python
string = "Пример-строки-с-дефисами"
new_string = string.replace("-", " ")
print(new_string)
```

Результат:

```
Пример строки с дефисами
```

Чтобы заменить пробелы на дефисы и сохранить GET-параметры в URL-адресе в исходной форме, можно разбить URL-адрес на две части: до и после "?" и затем применить замену пробелов на дефисы только на первую часть:

``` python
url = "https://www.example.com/page?param1=value1&param2=value2"
parts = url.split("?")
if len(parts) > 1:
    base_url, query_string = parts[0], parts[1]
    new_base_url = base_url.replace(" ", "-")
    new_url = new_base_url + "?" + query_string
    print(new_url)
else:
    new_url = url.replace(" ", "-")
    print(new_url)
```

Результат:

```
https://www.example.com/page?param1=value1&param2=value2
```

В этом примере GET-параметры будут сохранены в исходной форме, а замена пробелов на дефисы будет применена только к основному URL-адресу. Обратное преобразование можно сделать, выполнив замену дефисов на пробелы только на основной части URL-адреса:

``` python
new_base_url = new_url.split("?")[0]
final_url = new_base_url.replace("-", " ") + "?" + query_string
print(final_url)
```

Результат:

```
https://www.example.com/page?param1=value1&param2=value2
```

Таким образом, URL-адрес будет восстановлен в исходную форму с сохранением GET-параметров.
Замените пробелы на плюсы. Рекомендуется использовать функцию urlencode() для каждого отдельного параметра вместо ручного изменения. 
 Используйте urlencode() для каждого параметра вместо ручной замены пробелов на плюсы.
Похожие вопросы