SORU
9 NİSAN 2009, PERŞEMBE


Bir dize kontrol Python yüzen dönüştürülebilir

Dizeleri listesini çalıştırır bazı Python kodu var ve mümkünse tamsayı veya kayan noktalı sayılar dönüştürür. Tamsayılar için bu gayet kolaydır

if element.isdigit():
    newelement=int(element)

Kayan nokta sayı daha zordur. Şu an partition kullanıyorum('.') dize bölme ve her iki tarafın da bir basamak olduğundan emin olmak için kontrol ediyorum.

partition=element.partition('.')
if (partition[0].isdigit() and partition[1]=='.' and partition[2].isdigit()) or (partition[0]=='' and partition[1]=='.' and partition[2].isdigit()) or (partition[0].isdigit() and partition[1]=='.' and partition[2]==''):
    newelement=float(element)

Bu çalışır, ama belli ki bunun için, eğer deyim bir ayı biraz. Düşündüm başka bir çözüm sadece bir try/catch bloğu dönüşüm sarın ve this question açıklandığı gibi başarılı olmadığını görmek için.

Başka bir fikri olan var mı? Bölüm göreli yararları üzerine görüşleri ve yaklaşımları yakalamak/denedin mi?

CEVAP
9 NİSAN 2009, PERŞEMBE


Sadece.. kullanırdım

try:
    float(element)
except ValueError:
    print "Not a float"

... basit ve işe yarıyor

Başka bir seçenek düzenli bir ifade olurdu:

import re
if re.match("^\d ?\.\d ?$", element) is None:
    print "Not float"

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 2ndfloor91

    2ndfloor91

    17 Kasım 2007
  • Ben Vivona

    Ben Vivona

    24 Ocak 2010
  • Machinima

    Machinima

    17 Ocak 2006