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

  • Munchkin the Teddy Bear

    Munchkin the

    30 EYLÜL 2011
  • Orson Wang

    Orson Wang

    28 EKİM 2006
  • PaulGBelliveau

    PaulGBellive

    5 Mart 2009