Очистить страницу безопасности Google Scholar

У меня есть такая строка:

url = 'http://scholar.google.pl/citations?view_op\x3dsearch_authors\x26hl\x3dpl\x26oe\x3dLatin2\x26mauthors\x3dlabel:security\x26after_author\x3drukAAOJ8__8J\x26astart\x3d10'

Я хочу преобразовать его в это:

converted_url = 'https://scholar.google.pl/citations?view_op=search_authors&hl=en&mauthors=label:security&after_author=rukAAOJ8__8J&astart=10'

Я пробовал это:

converted_url = url.decode('utf-8')

Однако возникает эта ошибка:

AttributeError: 'str' object has no attribute 'decode'

person user7340814    schedule 26.12.2016    source источник
comment
Кстати: Получите имя автора и URL-адрес для тега из Google Scholar   -  person furas    schedule 26.12.2016


Ответы (1)


decode используется для преобразования bytes в string. И ваш URL-адрес string, а не bytes.

Вы можете использовать encode для преобразования этого string в bytes, а затем использовать decode для преобразования в правильное string.

(Я использую префикс r для имитации текста с этой проблемой - без префикса url не нужно преобразовывать)

url = r'http://scholar.google.pl/citations?view_op\x3dsearch_authors\x26hl\x3dpl\x26oe\x3dLatin2\x26mauthors\x3dlabel:security\x26after_author\x3drukAAOJ8__8J\x26astart\x3d10'
print(url)

url = url.encode('utf-8').decode('unicode_escape')
print(url)

результат:

http://scholar.google.pl/citations?view_op\x3dsearch_authors\x26hl\x3dpl\x26oe\x3dLatin2\x26mauthors\x3dlabel:security\x26after_author\x3drukAAOJ8__8J\x26astart\x3d10

http://scholar.google.pl/citations?view_op=search_authors&hl=pl&oe=Latin2&mauthors=label:security&after_author=rukAAOJ8__8J&astart=10

Кстати: сначала проверьте print(url), возможно, у вас правильный URL, но вы используете неправильный метод для его отображения. Python Shell отображает все результаты без print() с использованием print(repr()), который отображает некоторые символы в виде кода, чтобы показать, какая конечная кодировка используется в тексте (utf-8, iso-8859-1, win-1250, latin-1 и т. Д.)

person furas    schedule 26.12.2016