文字列に数字や記号ではなく文字のみが含まれているかどうかを確認しようとしています。例えば文字列にPythonの文字だけが含まれているかどうかを確認する方法はありますか?
:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
文字列に数字や記号ではなく文字のみが含まれているかどうかを確認しようとしています。例えば文字列にPythonの文字だけが含まれているかどうかを確認する方法はありますか?
:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
str.isalpha()
機能が動作します。すなわち、
if my_string.isalpha():
print('it is letters')
シンプル:
trueを返し、文字列のすべての文字がアルファベットであり、存在する場合:文字列内すべての文字が文字であれば
if string.isalpha(): print("It's all letters")
str.isalpha()
は唯一の真実であります少なくとも1つの文字。そうでない場合はfalse
デモ:
>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False
string.isalpha()
機能はあなたのために動作します。
は、私は正規表現を使用することをお勧めし、文字列はすべての文字のサブセットのみが含まれているかどうかを知りたいかもしれませんグーグル経由でこの質問を見つけるの人々のためにhttp://www.tutorialspoint.com/python/string_isalpha.htm
を参照してください:
import re
def only_letters(tested_string):
match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
return match is not None
あなたの例の正規表現は、私の意見ではもっと読みやすい '^ [A-HJ-M] * $' 。 – Petzku
かなりシンプルなソリューションI出てきた:(Python 3)
空白を許可する場合は、チェックしている文字列にスペースを追加できます。
もし "abcdefghjklmnopqrstuvwxyz"の文字が*ではない場合 – Guibod
私はあなたがいなくて、正しく使用しないでください: ''もし** "abcdefgh ** i ** jklmnopqrstuvwxyz"で – Guibod
'if letter.lower()...'を使うのと同じように、大文字はカウントされません。 'string'モジュールにはアルファベットのすべての文字にあらかじめ定義された変数もあります。実際には、大文字、小文字、およびその両方の3つがあります。もちろん、より簡単な解決法は既に上記で与えられています: 'isalpha'。 – zondo
人々がstr.isalpha
を使用しているように見えます。
これは、すべての文字が文字かどうかをチェックする1行の関数です。
def only_letters(string):
return all(letter.isalpha() for letter in string)
all
ブールの反復可能に受け入れ、ブール値の全てIFF True
がTrue
ある返します。
さらに一般的には、all
は、イテレートのオブジェクトがTrue
とみなされる場合はTrue
を返します。
False
:これらはFalse
None
len(list) == 0
すなわち)と考えられます。(当たり前)func only_letters(str):
return not any(str.isdigit(c) for c in str)
アルファベットではない英数字以外の多くの文字があるため、これは非常に信頼性の低い解決策です。 – zondo
実は、私たちは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を参照してください。
(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の例の上にチェック。
注:python2では、これはユニコード対応ではないため、 '' .isalpha() 'はFalseです。しかし、python3では ".isalpha()'はTrueです。なぜなら、python3にはUnicode文字列defaultyがあるからです。 – Squidly
@MrBones:Python 2では、「unicode」オブジェクトを使用してください。 –
ええ、私はちょうど読まれていない読者のために余分な有用な情報としてそれを追加していました – Squidly