2013-09-06 22 views

cevap

11

str.isalpha() fonksiyon çalışır. yani.

if my_string.isalpha(): 
    print('it is letters') 
54

Basit:

if string.isalpha(): 
    print("It's all letters") 

str.isalpha() dizede tek gerçek eğer tüm karakterler harfler ise:

Dönüş gerçek dize içindeki tüm karakterlerin alfabetik olup varsa En az bir karakter, aksi takdirde yanlış.

Demo:

>>> 'hello'.isalpha() 
True 
>>> '42hello'.isalpha() 
False 
>>> 'hel lo'.isalpha() 
False 
+10

Not: python2'de, bu unicode farkında değil, "" ä ".isalpha()' False. Ancak, python3 '" ä ".isalpha()' dır, çünkü python3 varsayılan olarak unicode dizeleri vardır. – Squidly

+0

@MrBones: Python 2'de, önemli olan bir 'unicode 'nesnesi kullanın. –

+0

Evet, sadece okuyucular için fazladan yararlı bilgi olarak ekliyordum – Squidly

5

string.isalpha() işlevi sizin için çalışacaktır.

import re 

def only_letters(tested_string): 
    match = re.match("^[ABCDEFGHJKLM]*$", tested_string) 
    return match is not None 
6

bak, ben kullanan Regexes tavsiye sen sen alanlarda izin verilmesini istiyorsanız karşı kontrol ediyoruz dizede bir boşluk ekleyebilirsiniz

def only_letters(tested_string): 
     for letter in tested_string: 
      if not letter in "abcdefghjklmnopqrstuvwxyz": 
       return False 
     return True 

(Python 3): ile geldi.

+5

Nitpick gitmek için üzgünüm, ama örneğinizdeki regex de olabilir [^ -A-HJ-M] * $ ', bu benim görüşüme göre daha okunabilir . – Petzku

-1

Oldukça basit bir çözüm I:

bir dize tüm harfleri yalnızca bir alt kümesini içeriyorsa bilmek isteyebilirsiniz Google üzerinden bu soruyu bulma insanlar için http://www.tutorialspoint.com/python/string_isalpha.htm

+0

"abcdefghjklmnopqrstuvwxyz" – Guibod

+0

içinde "* işareti yoksa * Bir eksiksiniz ve düzgün bir şekilde kullanmayın: " harfi "**" ** "** jklmnopqrstuvwxyz" ' – Guibod

+0

isteyebilirsiniz eğer letter.lower() ise kullanılır ... '' Olduğu gibi büyük harf sayılmaz. 'String' modülü ayrıca alfabedeki tüm harflere önceden tanımlanmış bir değişkene sahiptir. Aslında üç tane var: büyük harf, küçük harf ve ikisi için. Tabii ki, daha basit olan çözüm yukarıda zaten verilmiştir: isalpha. – zondo

4

Kullanıcılar, str.isalpha numaralı telefonu kullanmayı söylüyor.

Bu, tüm karakterlerin harf olup olmadığını denetleyen tek satırlık işlevdir.

def only_letters(string): 
    return all(letter.isalpha() for letter in string) 

all Boolean bir iterable kabul eder ve Boolean her True olan IFF True döndürür.

Yinelemenizdeki nesneler True olarak kabul edilirse, daha genel olarak all, True değerini döndürür. (: len(list) == 0 örneğin)

  • False Bu
  • None
  • boş veri yapıları

      False düşünülebilir.(Yaa) Aslında
  • +0

    Bu, en önemli çözümdür, çünkü karakter bazında önermeyi reddetmek kolaydır. – Alex

    +1

    'isalpha' zaten her harfi kontrol eder. Bunu bir defadan fazla kullanmaya gerek yok. – zondo

    0
    func only_letters(str): 
        return not any(str.isdigit(c) for c in str) 
    
    +0

    Rakam olmayan ve alfabetik olmayan bir çok karakter var, bu yüzden bu çok güvenilmez bir çözüm. – zondo

    3

    , 21. yüzyılda ve insanlar artık ilgili soruyu anwering zaman sadece bu ASCII kullanarak iletişim küreselleşen dünyada artık konum "sadece harfleri olan" hesap harfleri içine almak gerekir ASCII olmayan alfabelerden de.

    unicodedata.category('陳') 
    'Lo' 
    
    unicodedata.category('A') 
    'Lu' 
    
    unicodedata.category('1') 
    'Nd' 
    
    unicodedata.category('a') 
    'Ll' 
    

    categories and their abbreviations Unicode standardı tanımlanmıştır: Python diğer şeyler arasında Unicode karakter sınıflandırmayı sağlayan bir hoş serin unicodedata kütüphanesi vardır. Sonra

    def only_letters(s): 
        for c in s: 
         cat = unicodedata.category(c) 
         if cat not in ('Ll','Lu','Lo'): 
          return False 
        return True 
    

    Ve: Buradan oldukça kolay böyle bir fonksiyonu elde edebilirsiniz olabilir

    only_letters('Bzdrężyło') 
    True 
    
    only_letters('He7lo') 
    False 
    

    Eğer beyaz listede bulunan kategoriler oldukça kolay iç ilişki aracılığıyla kontrol edilebilir görebileceğiniz gibi işlevi. Daha ayrıntılı bir tartışma için this article'a bakın.

    0

    (1) Dizeyi yazdırırken str.isalpha() kullanın.

    (2) referans için programın altına kontrol edin: -

    str = "this"; # No space & digit in this string 
    print str.isalpha() # it gives return True 
    
    str = "this is 2"; 
    print str.isalpha() # it gives return False 
    

    Not: - Ben Ubuntu Örneğin yukarıda işaretlemiş.

    İlgili konular