SORU
17 Ocak 2010, Pazar


&Quot;u" ve "r" dize bayrakları Python ve ham dize hazır tam olarak ne?

this question, sorarken ham dizeleri hakkında fazla bir bilgim olmadığını farkettim. Biri Django bir eğitmen olduğunu iddia ettiği için, bu berbat bir şey.

Kodlama ne olduğunu biliyorum, ve u yalnız aldığım günden beri Unicode ne yaptığını biliyorum.

Ama r tam olarak ne iş yapar? Nasıl bir dize neden?

Ve Allah kahretsin ne yapıyor her şeyden önce, ur?

Son olarak, bir Unicode dize geri basit bir raw string gitmek için herhangi bir güvenilir bir yolu var mı?

Sistem ve metin editörü karakter kümesi UTF-8, u aslında hiç bir şey yapmıyor mu? ayarlarsanız Ah, bu arada,

CEVAP
17 Ocak 2010, Pazar


Gerçekten "ham . herhangi ^em>string"; ham vardırdize hazırtam olarak dize hazır açılıştan önce 'r' alıntı işaretlenmiştir.

Bir "ham dize" biraz farklı bir sözdizimi için bir dize, bir eğik çizgi \, olarak alınır anlamı "sadece bir eğik çizgi" (konusu haric hemen önce bir alıntı olur aksi sonlandırmak literal) - "kaçış dizileri" temsil etmek için yeni satır, sekme, backspaces, form yayınları. Normal bir dizge içinde, her ters eğik çizgi kaçış dizisinin başlangıç olarak götürülüyor önlemek için iki katına olmalıdır.

Bu sözdizimi değişken var çoğunlukla çünkü sözdizimi düzenli ifade desenleri ağır ile ters eğik çizgi (ama asla sonunda, yani "hariç" hükmü yukarıda fark etmez) ve göründüğünden biraz daha zaman önlemek katına, her ... hepsi bu. Ayrıca bazı popülerlik kazandı express yerel Windows dosya yolları (ters eğik çizgi yerine normal bölü gibi diğer platformlar), ama bu çok nadiren gerekir (beri normal bölü çoğunlukla iyi çalışıyor Windows da) ve kusurlu (nedeniyle "hariç" hükmü yukarıda).

r'...' bayt dize (2.* Python), ur'...' Unicode dizeleri (2.* Python tekrar), ve diğer üç çeşit alıntı da üreten aynı tip dizeleri (örneğin r'...', r'''...''', r"...", r"""...""" tüm bayt dizeleri, vb.).

Değil emin ne "olacak . demek ^em>geriham dize yok çünkü " - özünde yok ileri ve geri yönyazınolabilir gibi gayet normal string nesneleri ifade etmek için farklı bir sözdizimi , bayt veya unicode.

Ve evet, 2.*, u'...' Pythonsadece 15 * -- * eski bir unicode dize ders, her zaman farklı, ikinci bayt dize. Harf kodlaması ifade olabilir ne tamamen dik bir konudur.

E. g., düşünün (Python 2.6):

>>> sys.getsizeof('ciao')
28
>>> sys.getsizeof(u'ciao')
34

elbette Unicode nesne hafızada daha fazla yer kaplıyor (çok kısa bir dize için çok küçük bir fark, tabii ki;-).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • girleffect

    girleffect

    20 Mayıs 2008
  • RayperEnglishKnight

    RayperEnglis

    24 Kasım 2008
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010