2013-09-06 5 views

答えて

11

str.isalpha()機能が動作します。すなわち、

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

シンプル:

trueを返し、文字列のすべての文字がアルファベットであり、存在する場合:文字列内すべての文字が文字であれば

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

str.isalpha()は唯一の真実であります少なくとも1つの文字。そうでない場合はfalse

デモ:

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

注:python2では、これはユニコード対応ではないため、 '' .isalpha() 'はFalseです。しかし、python3では ".isalpha()'はTrueです。なぜなら、python3にはUnicode文字列defaultyがあるからです。 – Squidly

+0

@MrBones:Python 2では、「unicode」オブジェクトを使用してください。 –

+0

ええ、私はちょうど読まれていない読者のために余分な有用な情報としてそれを追加していました – Squidly

5

string.isalpha()機能はあなたのために動作します。

は、私は正規表現を使用することをお勧めし、文字列はすべての文字のサブセットのみが含まれているかどうかを知りたいかもしれませんグーグル経由でこの質問を見つけるの人々のためにhttp://www.tutorialspoint.com/python/string_isalpha.htm

6

を参照してください:

import re 

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

あなたの例の正規表現は、私の意見ではもっと読みやすい '^ [A-HJ-M] * $' 。 – Petzku

-1

かなりシンプルなソリューションI出てきた:(Python 3)

空白を許可する場合は、チェックしている文字列にスペースを追加できます。

+0

もし "abcdefghjklmnopqrstuvwxyz"の文字が*ではない場合 – Guibod

+0

私はあなたがいなくて、正しく使用しないでください: ''もし** "abcdefgh ** i ** jklmnopqrstuvwxyz"で – Guibod

+0

'if letter.lower()...'を使うのと同じように、大文字はカウントされません。 'string'モジュールにはアルファベットのすべての文字にあらかじめ定義された変数もあります。実際には、大文字、小文字、およびその両方の3つがあります。もちろん、より簡単な解決法は既に上記で与えられています: 'isalpha'。 – zondo

4

人々がstr.isalphaを使用しているように見えます。

これは、すべての文字が文字かどうかをチェックする1行の関数です。

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

allブールの反復可能に受け入れ、ブール値の全てIFF TrueTrueある返します。

さらに一般的には、allは、イテレートのオブジェクトがTrueとみなされる場合はTrueを返します。

  • False:これらはFalse

    • None
    • 空のデータ構造(len(list) == 0すなわち)と考えられます。(当たり前)
  • +0

    これは、文字ベースで前提を否定するのが簡単なので、最も興味深い解決策です。 – Alex

    +1

    'isalpha'はすでにすべての文字をチェックしています。それを複数回使用する必要はありません。 – zondo

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

    アルファベットではない英数字以外の多くの文字があるため、これは非常に信頼性の低い解決策です。 – zondo

    3

    実は、私たちは21世紀のグローバル化した世界で、今じゃないんだし、アカウントの文字を考慮する必要がある「ことが唯一の文字である」についての質問をanweringとき、人々はもはやだけなので、ASCIIを使用して通信ASCII以外のアルファベットも同様です。

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

    categories and their abbreviationsは、Unicode標準で定義されています。Pythonは他のものの間でUnicode文字の分類を可能にかなりクールunicodedataライブラリを持っています。あなたはホワイトリストのカテゴリは非常に簡単に内部のタプルによって制御することができる見ることができるように

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

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

    そして:ここからは、非常に簡単に次のような機能を思い付くことができ関数。詳細については、this articleを参照してください。

    0

    (1)文字列を印刷するときにstr.isalpha()を使用してください。

    (2)ご参考のためのプログラムの下に確認してください: -

    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 
    

    注: - 私はUbuntuの例の上にチェック

    関連する問題