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

  • Caina Mondo Zine

    Caina Mondo

    13 EKİM 2007
  • colacas

    colacas

    29 EKİM 2006
  • PC Learning Zone - Computer Training

    PC Learning

    8 EYLÜL 2006