Исправить Nautilus URI в скрипте Python

Вы можете нажать Ctrl + fn + вверх / вниз

1
задан 7 April 2012 в 05:24

1 ответ

Это не очень понятно из вашего вопроса, но похоже, что вы ищете urllib. Обратите внимание, что urllib ожидает 8-битные строки, поэтому вам нужно будет сделать некоторые fancy decode / encode. Добро пожаловать в python2 немного странную поддержку юникода, pythn3 лучше.

# -*- coding: utf-8 -*-
import urllib

url=u'/home/javier/Área'

url2 = url.encode('utf-8') # urllib expects 8-bit string
url3 = urllib.quote_plus(url2)
print url3  # >> %2Fhome%2Fjavier%2F%C3%81rea
url4 = urllib.unquote(url3) # It will return a 8-bit string
print url4  # >> /home/javier/Área
print url4.decode('utf-8')

Вы можете использовать urllib.qoute вместо * urllib.quote_plus *, он не будет указывать пробелы, + (плюсы) и / ( косая черта). Обе функции принимают строку как второй параметр, они будут содержать любой символ в этой строке, как есть (я имею в виду, что он не будет приводить его) в выходной строке. Обратите внимание, что значение по умолчанию для безопасного имени второго параметра - «/» для цитаты и «» для quote_plus. Если вы не включаете косую черту во второй кавычки параметра, это изменит ее.

urllib.quote_plus('a/a','/')  # 'a/a'
2
ответ дан 25 May 2018 в 13:04
  • 1
    Спасибо, Хавьер! Однако у меня есть еще несколько вопросов. Поскольку я получаю URL-адрес динамически, я (я полагаю) не могу использовать sintax u'string, а unicode (" string ") выдает ошибку (не может декодировать символ в позиции SOMETHING). Кроме того, я заметил, что в этом процессе пространства становятся плюсами, и это не происходит с URI Nautilus. Кроме того, urllib во время этой цитаты и без комментариев превращает косые черты в% 2Fs, а Nautilus - нет. – Pablo 4 April 2012 в 10:12
  • 2
    Вы можете использовать цитату вместо qoute_plus, она будет содержать пробелы и /. Если вам нужно сохранить некоторые дополнительные символы, есть второй параметр для обоих методов (quote, quote_plus), он принимает строку, это позволит избежать замены всех символов, которые появляются в строке. – Javier Rivera 4 April 2012 в 11:44
  • 3
    Обратите внимание, что для котировки требуется 8-битная строка, если ваш URL-адрес закодирован как utf-8 (вероятно, в Linux-мире), вы можете просто передать его, как это делается для unquote. – Javier Rivera 4 April 2012 в 11:52
  • 4
    Извините, что слишком долго не отвечал. Так, это работает! Ты восхитителен! Большое спасибо! : D – Pablo 28 April 2012 в 23:43

Другие вопросы по тегам:

Похожие вопросы: