web-dev-qa-db-ja.com

Pythonで文字列に文字のみが含まれているかどうかを確認するにはどうすればよいですか?

文字列に数字のみまたは記号ではなく文字のみが含まれているかどうかを確認しようとしています。

例えば:

>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
39
user2745401

シンプル:

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

str.isalpha() は、文字列のall文字が文字の場合にのみ真です。

文字列内のすべての文字がアルファベットで、少なくとも1つの文字がある場合はtrueを返し、そうでない場合はfalseを返します。

デモ:

>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False
81
Martijn Pieters

str.isalpha()関数が機能します。すなわち。

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

文字列がすべての文字のサブセットのみを含むかどうかを知りたいと思うかもしれないグーグルを介してこの質問を見つける人々のために、私は正規表現を使用することをお勧めします:

import re

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

string.isalpha()関数が機能します。

http://www.tutorialspoint.com/python/string_isalpha.htm を参照してください

6
Amilcar Andrade

実際、私たちは21世紀のグローバル化した世界にいるため、人々はASCIIのみを使用して通信しなくなったため、「is it letter only」に関する質問に答えるときは、まあ。 Pythonにはかなりクールな nicodedata ライブラリがあり、特にUnicode文字の分類が可能です。

unicodedata.category('陳')
'Lo'

unicodedata.category('A')
'Lu'

unicodedata.category('1')
'Nd'

unicodedata.category('a')
'Ll'

カテゴリとその略語 は、Unicode標準で定義されています。ここから、次のような関数を簡単に作成できます。

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

その後:

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

only_letters('He7lo')
False

ご覧のとおり、ホワイトリストに登録されたカテゴリは、関数内のTupleによって非常に簡単に制御できます。詳細な議論については この記事 をご覧ください。

5
kravietz

人々はstr.isalphaを使用するように言っているようです。

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

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

allはブール値の反復可能変数を受け入れ、すべてのブール値がTrueである場合はTrueを返します。

より一般的には、イテラブルのオブジェクトがallと見なされる場合、TrueTrueを返します。これらはFalseと見なされます

  • None
  • 空のデータ構造(例:len(list) == 0
  • False。 (だよ)
5
hlin117

(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で上記の例を確認しました。

2
Hemin Patel

正規表現を活用できます。

>>> import re
>>> pattern = re.compile("^[a-zA-Z]+$")
>>> pattern.match("hello")
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> pattern.match("hel7lo")
>>>

一致するものが見つかった場合、match()メソッドはMatchオブジェクトを返します。それ以外の場合は、Noneを返します。


より簡単な方法は、.isalpha()メソッドを使用することです

>>> "Hello".isalpha()
True
>>> "Hel7lo".isalpha()
False

isalpha()は、文字列に少なくとも1つの文字があり、文字列のすべての文字がアルファベットの場合にtrueを返します。

1
Shail