Mungkinkah mencetak 'é' sebagai '%C3%A9' dengan Python?

Saya mengalami masalah saat meneruskan uri dengan karakter unicode ke rdflib untuk ditambahkan ke Graph()

Jadi misalnya, saya ingin menjalankan:

from rdflib import Graph
g = Graph()
uri = 'http://dbpedia.org/resource/René_Auberjonois'
g.parse(uri)

Tapi saya mendapatkan kesalahan pengkodean codec ascii yang sangat umum di Python.

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 17: ordinal not in range(128)

Jika uri diteruskan sebagai `http://dbpedia.org/resource/Ren%C3%A9_Auberjonois', akan baik-baik saja, parser berfungsi jika stringnya seperti itu (maaf, saya tidak tahu harus menyebutnya apa, apakah itu 'mentah', 'lolos', 'tidak lolos' atau lainnya) .

apakah ada hal yang dapat saya lakukan untuk uri (tidak disetel dengan cara ini, melainkan disetel melalui fungsi yang mengulang daftar nama) sehingga print uri akan menghasilkan http://dbpedia.org/resource/Ren%C3%A9_Auberjonois?

latar belakang: Saya awalnya menanyakan pertanyaan ini tetapi menambahkan u di bagian depan string tidak layak dengan cara skrip diatur (saya tidak mengatur setiap string seperti: s = 'René_Auberjonois') atau pada akhirnya tidak berfungsi ketika saya meneruskannya ke rdflib (yaitu masih mendapatkan kesalahan pengkodean karena itu sedang dilewati http://dbpedia.org/resource/René_Auberjonois)

Juga jika ada sumber daya yang bagus untuk memahami masalah yang saya alami di sini, itu akan bagus. Saya bingung dengan pengkodean karakter saat ini.


person roy    schedule 28.04.2014    source sumber
comment
Mengapa Anda tidak menggunakan unicode literal?   -  person Ignacio Vazquez-Abrams    schedule 28.04.2014
comment
Karena saya tidak terlalu memahami topik ini dan tidak yakin apa manfaatnya bagi saya atau apa sebenarnya manfaatnya (yaitu saya bukan seorang profesional)   -  person roy    schedule 28.04.2014
comment
Tapi Anda setidaknya membaca jawaban atas pertanyaan Anda yang lain, bukan?   -  person Ignacio Vazquez-Abrams    schedule 28.04.2014
comment
ya dan saya menghargai bantuan Anda, tetapi bahkan dengan menggunakan saran itu, saya menemukan bahwa saya masih mengalami masalah yang sama.   -  person roy    schedule 28.04.2014


Jawaban (1)


Jika formulir yang dikodekan persen adalah yang Anda perlukan, Anda dapat menggunakan urllib:

>>> import urllib
>>> s='http://dbpedia.org/René_Auberjonois'
>>> urllib.quote(s)
'http%3A//dbpedia.org/Ren%C3%A9_Auberjonois'
>>> urllib.quote(s, safe=':')
'http:%2F%2Fdbpedia.org%2FRen%C3%A9_Auberjonois'
>>> urllib.quote(s, safe=':/')
'http://dbpedia.org/Ren%C3%A9_Auberjonois'
>>> 

Gunakan parameter safe untuk menentukan karakter yang tidak boleh dikutip. Standarnya adalah /.

person devnull    schedule 28.04.2014