Bagaimana Anda mengonversi string Unicode (berisi karakter tambahan seperti £ $, dll.) Ke string Python?
python
string
unicode
type-conversion
williamtroup
sumber
sumber
print type(unicode_string), repr(unicode_string)
Python 3.x:print type(unicode_string), ascii(unicode_string)
Kemudian edit pertanyaan Anda dan salin / tempelkan hasil dari pernyataan cetak di atas. JANGAN mengetik ulang hasilnya. Lihat juga di dekat bagian atas HTML Anda dan lihat apakah Anda dapat menemukan sesuatu seperti ini: <meta http-equiv = "Content-Type" content = "text / html; charset = iso-8859unicode_string = u"I'm unicode string"; bytestring = unicode_string.encode('utf-8'); unicode_again = bytestring.decode('utf-8')
Jawaban:
Lihat
unicodedata.normalize
sumber
unicode
string menjadi astr
adalah dengan menjatuhkan atau mengonversi karakter yang tidak dapat direpresentasikan dalam ASCII. Jadi +1 dari saya.type(title) == unicode and type(title.encode('utf-8')) == str
. Tidak perlu merusak input, untuk mendapatkan bytestring yang dapat disimpan ke file.Anda dapat menggunakan penyandian ke ASCII jika Anda tidak perlu menerjemahkan karakter non-ASCII:
sumber
ignore
vsreplace
a.encode('ascii', 'xmlcharrefreplace')
memberi'aaaàçççñññ'
.type(a)
adastr
di Python 3.6.8 dan tidak memilikiencode()
metode apa pun .Jika string hanya berisi karakter ascii.
sumber
Jika Anda memiliki string Unicode, dan Anda ingin menulis ini ke file, atau bentuk serial lainnya, Anda harus terlebih dahulu menyandikannya ke representasi tertentu yang dapat disimpan. Ada beberapa pengkodean Unicode umum, seperti UTF-16 (menggunakan dua byte untuk sebagian besar karakter Unicode) atau UTF-8 (1-4 byte / codepoint tergantung pada karakternya), dll. Untuk mengonversi string itu menjadi pengkodean tertentu, Anda bisa menggunakan:
String byte mentah ini dapat ditulis ke file. Namun, perhatikan bahwa ketika membacanya kembali, Anda harus tahu apa itu pengkodean dan mendekode menggunakan pengodean yang sama.
Saat menulis ke file, Anda dapat menyingkirkan proses encode / decode manual ini dengan menggunakan modul codec . Jadi, untuk membuka file yang mengkodekan semua string Unicode ke UTF-8 , gunakan:
Perhatikan bahwa segala hal lain yang menggunakan file-file ini harus memahami apa penyandian file jika ingin membacanya. Jika Anda adalah satu-satunya yang melakukan pembacaan / penulisan ini bukan masalah, jika tidak pastikan Anda menulis dalam bentuk yang dapat dimengerti oleh siapa pun yang menggunakan file tersebut.
Dalam Python 3, bentuk akses file ini adalah default, dan
open
fungsi bawaan akan mengambil parameter encoding dan selalu menerjemahkan ke / dari string Unicode (objek string default di Python 3) untuk file yang dibuka dalam mode teks.sumber
Berikut ini sebuah contoh:
sumber
utf8
seperti yang ditunjukkan di sini, hasilnya hanya tanda tanya? Ini adalah gambar Python saya, versi 2.7.13. (Saya dapat menyandikan objek unicode lain sepertiu"Klüft"
, tetapi bukan Euro?)Nah, jika Anda bersedia / siap untuk beralih ke Python 3 (yang mungkin bukan karena ketidakcocokan mundur dengan beberapa kode Python 2), Anda tidak perlu melakukan konversi apa pun; semua teks dalam Python 3 diwakili dengan string Unicode, yang juga berarti bahwa tidak ada lagi penggunaan
u'<text>'
sintaksis. Anda juga memiliki apa, string byte, yang digunakan untuk merepresentasikan data (yang mungkin merupakan string yang disandikan).http://docs.python.org/3.1/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit
(Tentu saja, jika Anda saat ini menggunakan Python 3, maka masalahnya kemungkinan ada hubungannya dengan bagaimana Anda mencoba menyimpan teks ke file.)
sumber
Berikut ini contoh kode
sumber
file berisi string unicode-esaped
untuk saya
sumber
result.encode().decode('unicode-escape')
Tidak ada jawaban yang berfungsi untuk kasus saya, di mana saya memiliki variabel string yang berisi karakter unicode, dan tidak ada kode-decode yang dijelaskan di sini.
Jika saya melakukannya di Terminal
atau
Outputnya benar:
Tetapi bekerja dengan skrip yang memuat variabel string ini tidak berfungsi.
Inilah yang berhasil pada kasus saya , kalau-kalau membantu siapa pun:
sumber