____ Xi için en iyi çıkış tipi ve kodlama uygulamaları() fonksiyonu var?
Son zamanlarda, __repr__()
, format()
ve kodlama ile sorun çok yaşadım.__repr__()
çıkış kodlanmış olmalıdır ya da bir unicode dizesi olabilir?Python __repr__()
en iyi sonuç için bir kodlama var mı? Çıkış için istediğim ASCII olmayan karakterler var.
Python 2 kullanıyorum.kolayca Python 3 için adapte edilebilir x ve kod yazmak istiyorum. Program böylece kullanır
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function # The 'Hello' literal represents a Unicode object
Burada beni rahatsız eden bazı Ek sorunlar var, ve bunları çözen bir çözüm arıyorum:
- UTF-8 bir terminal için yazdırma iş (
UTF-8
sys.stdout.encoding
set var ama diğer durumlarda çok işe yaradı en iyisi). - Boru çıktıyı bir dosyaya (UTF-8 kodlanmış olarak) çalışması gerekir (bu durumda,
sys.stdout.encoding
13**). __repr__()
birçok fonksiyon için benim kod şu anda* *15, ve ağır olan birçok vardır. Sağlam ve daha hafif bir şey var mı?- Bazı durumlarda, hatta 16*, yani*, nesnelerin temsili gibi çirkin hayvanlar, biçimlendirme dize koymak çözülür, ve sonra yeniden kodlanmış. Böyle karmaşık dönüşümleri önlemek için istiyorum.
Kibarca bu kodlama sorulara saygılı davranan __repr__()
basit fonksiyonlar yazmak için ne dersiniz?
CEVAP
, *18 Python2* (__str__
) string bir nesne dönmek gerekir, bir değil
unicode nesne. Python3, durumu __repr__
ters ve __str__
unicode nesneleri, bayt (kızlık dize) döndürür gereken nesneler:
class Foo(object):
def __repr__(self):
return u'\N{WHITE SMILING FACE}'
class Bar(object):
def __repr__(self):
return u'\N{WHITE SMILING FACE}'.encode('utf8')
repr(Bar())
# ☺
repr(Foo())
# UnicodeEncodeError: 'ascii' codec can't encode character u'\u263a' in position 0: ordinal not in range(128)
Python2, başka seçeneğin yok. Bu kodlama almak zorunda
__repr__
değerini döndürür.
Bu arada, PrintFails wiki okudunuz mu? Doğrudan cevap değil diğer sorularınızı, ama aydınlatıcı olarak faydalı buldum neden belirli hatalar oluşur.
from __future__ import unicode_literals
, kullanırken
'<{}>'.format(repr(x).decode('utf-8'))).encode('utf-8')
daha basit yazılabilir
str('<{}>').format(repr(x))
str
varsayarsak 28 ** sisteminizde kodlar.
from __future__ import unicode_literals
ifadesi olarak yazılabilir olmadan:
'<{}>'.format(repr(x))
Derleyici/daha hızlı bir program yapma...
Nasıl kodlama uygulamaları artık yıl b...
Bir WordPress kullanmak için bir&; var...
Bir kodlama kullanmadan bayt dizisi iç...
Nasıl çıkış için MySQL csv biçiminde s...