Herhangi bir veri türünü Python'da bir dizeye nasıl değiştirebilirim?
Herhangi bir veri türünü Python'da bir dizeye nasıl değiştirebilirim?
Yanıtlar:
myvariable = 4
mystring = str(myvariable) # '4'
ayrıca, alternatif olarak repr'yi deneyin:
mystring = repr(myvariable) # '4'
Buna python'da "dönüşüm" denir ve oldukça yaygındır.
str(u'ä')işe yaramaz. Ancak repr(u'ä')işe yarayacaktır.
str"Nesne", nesnenin verilerinin dize ile temsil edilen bir gösterimidir. Kendi sınıfınızı yazıyorsanız ve sizin striçin çalışmak istiyorsanız şunu ekleyin:
def __str__(self):
return "Some descriptive string"
print str(myObj)arayacak myObj.__str__().
reprsınıf bilgisi hakkında genellikle bilgi üreten benzer bir yöntemdir. Çoğu çekirdek kütüphane nesnesi repriçin açılı ayraçlar arasında sınıf adı (ve bazen de bazı sınıf bilgileri) üretir. reprörneğin, nesnenizi etkileşim bölmesine yalnızca kullanmadan etkileşim bölmesine yazarak kullanılırprint herhangi bir şey veya başka bir şey .
Sen davranışını tanımlayabilirsiniz reprsen davranışını tanımlayabilirsiniz gibi kendi nesneler için str:
def __repr__(self):
return "Some descriptive string"
>>> myObjEtkileşimlerinizin bölmesinde veya repr(myObj), sonuçlanacaktırmyObj.__repr__()
object.__repr__-style açılı ayraç temsilini döndürdüğü doğrudur , ancak en çok kullanılanların çoğunun geri dönmediği doğrudur . İçin temel kural reprolduğunu o aynı nesneyi üretmek için değerlendirilebilir olabilir Python kodunu dönmek için mantıklı eğer, yapmak gibi str, frozensetve diğer birçok yerleşikleri, ama eğer bu olmuyorsa, açı-parantez kullanın Geri dönüşünüzün, insan tarafından okunabilir ve değerlendirilebilir bir kaynak olarak karıştırılamayacağından emin olmak için
listkendini içeren bir şey sadece benzeyen değil, yanlış bir şey olarak değerlendirilen değerlendirilebilir kod olan bir şey döndürüyor - ancak çekirdek geliştiriciler bunu asla genişletmek için lisans olarak almadı stdlib içine davranış.)
Tüm yanıtları kullanmanızı öneririm str(object). Nesnenizde ascii karakterlerinden daha fazlası varsa başarısız olabilir ve hata göreceksiniz ordinal not in range(128). İngilizce dışındaki bir dilde dize listesini dönüştürürken benim için durum buydu
Kullanarak çözdüm unicode(object)
str(object) hile yapacak.
Nesnenin dizge biçimini değiştirmek istiyorsanız, __str__(self)nesnenin sınıfı için yöntem tanımlayın . Bu yöntem str veya unicode nesnesini döndürmelidir.
str(any_var)veyaany_var.__str__()
timeitmodülü kullanarak doğrulamanızı öneririm ), str(any_var)insan için daha okunabilir olduğundan ve any_vartanımlayan __repr__()ancak tanımlanmayan durumlardan faydalanmaya izin verdiği için kullanmalısınız. t tanımlayın __str__().
Yerleşik strolanı kullanın :
x = str(something)
Örnekler:
>>> str(1)
'1'
>>> str(1.0)
'1.0'
>>> str([])
'[]'
>>> str({})
'{}'
...
Belgelerden:
Bir nesnenin güzel yazdırılabilir bir gösterimini içeren bir dize döndürün. Dizeler için bu, dizenin kendisini döndürür. Repr (object) ile fark, str (object) öğesinin her zaman eval () için kabul edilebilir bir dize döndürmeye çalışmamasıdır; hedefi yazdırılabilir bir dize döndürmektir. Herhangi bir argüman verilmezse, boş dizeyi döndürür ''.
Sadece kullanın str- örneğin:
>>> str([])
'[]'
Veri türünü gerçekten "değiştirmek" istiyorsanız dikkatli olun. Diğer durumlarda olduğu gibi (örneğin bir fordöngüdeki yineleyiciyi değiştirmek ) bu beklenmedik davranışlar ortaya çıkarabilir:
>> dct = {1:3, 2:1}
>> len(str(dct))
12
>> print(str(dct))
{1: 31, 2: 0}
>> l = ["all","colours"]
>> len(str(l))
18
str(var)? Aradığın şey bu mu?