Как заменить ™ в строке? - PullRequest
0 голосов
/ 04 мая 2018

У меня строка выглядит следующим образом: Начало работы с NetX ™ DHCP rev1.05

Я хочу заменить ТМ на% E2% 84% A2.

Я добавил: # - - кодировка: utf-8 - - в самый верх файла, все еще не работает, никаких ошибок не появляется

Я использую Python 2.7

Вот мой код Python:

def create_link(title):
  temp_title = title.replace(' ', '%20') # first replace space with %20. works fine
  temp_title.replace('™', '%E2%84%A2') # then replace TM, not working
  link = 'https://ApplicationNotes/'+ temp_title
  return link

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Замена не работает, потому что для второго вызова str.replace() возвращаемое значение не присваивается никому, поэтому оно теряется. Вы можете исправить это с помощью:

temp_title = temp_title.replace('™', '%E2%84%A2')

для привязки возвращаемого значения к temp_title, однако, учтите следующее.

Поскольку вы хотите в процентах кодировать строку для использования в URL, вы можете просто использовать urlib.quote():

>>> title = 'NetX™ DHCP rev1.05'
>>> title
'NetX\xe2\x84\xa2 DHCP rev1.05'
>>> import urllib    # Python 2
>>> urllib.quote(title)
'NetX%E2%84%A2%20DHCP%20rev1.05'

Вы заметите, что пробелы также были обработаны для вас. Таким образом, вы можете написать свою функцию так:

def create_link(title):
    return urllib.quote('https://ApplicationNotes/{}'.format(title))

, который имеет преимущество в процентном кодировании других допустимых символов в URL.

Для полноты, если вы использовали Python 3:

>>> from urllib.parse import quote
>>> quote('NetX™ DHCP rev1.05')
'NetX%E2%84%A2%20DHCP%20rev1.05'

Возможно, вам даже не нужно указывать URL в зависимости от того, что вы хотите с ним сделать. Если вы используете requests для отправки HTTP-запроса на URL, вы можете просто использовать его как:

>>> import requests
>>> r = requests.get('https://ApplicationNotes/NetX™ DHCP rev1.05')
>>> r.url
u'https://ApplicationNotes/NetX%E2%84%A2%20DHCP%20rev1.05'
0 голосов
/ 04 мая 2018

Я использовал Python 3.4, и этот код работает для меня. измените строку 3 на temp_title = temp_title.replace('™', '%E2%84%A2')

def create_link(title):
    temp_title = title.replace(' ', '%20')
    temp_title = temp_title.replace('™', '%E2%84%A2')
    link = 'https://ApplicationNotes/'+ temp_title
    return link
0 голосов
/ 04 мая 2018

Я думаю, вы используете re модуль:

import re
def create_link(title):
  temp_title = title.replace(' ', '%20') # first replace space with %20. works fine
  temp_title = re.sub(r'™', r'%E2%84%A2', temp_title) # this change
  link = 'https://ApplicationNotes/'+ temp_title
  return link
...