2017-04-09 16 views
0

Java guyがPythonに移行しています。Python構文:値(文字列)が文字列か数値かをチェックして何かをするにはどうすればいいですか

文字列が文字列か数字かを確認してから、何かしたいのですが、この構文でエラーが発生します。

if value.isdigit() == True 
do something 

else: 
    if value.isdigit == False 
     do something. 
+3

どうしますか? – zengr

+1

これはうまくいきます: 'value.isdigit():print(" A digit ")else:print(" Not a digit ")' – zengr

+3

文字列は常に数字ではなく文字列です。それを確認するコードは必要ありません。文字列にintまたはfloatを呼び出してintまたはfloatを生成できるかどうかをチェックしたい場合は、それを呼び出して、そうでないと判明したら例外をキャッチします。 (これはPythonで普通に行うことです) 'isdigit'はあなたが知る必要があることを教えません。たとえば、 '--'記号を拒否します。 – user2357112

答えて

1

ステートメントと明示的なブール比較をディッチします。また、value.isdigitの代わりにvalue.isdigit()を使用し、if ...の末尾にコロンを付けることを忘れないでください。

if value.isdigit(): 
    # only digits 
else: 
    # not only digits 
+0

明示的なブール値を取り除き、処理したものが機能します。感謝@gyreとすべての答えです。 – Raghu

0

私はあなたのエラーは何だったのか分かりませんが、2つのif文の後にコロンが欠けています。また、文字列がアルファベットか数字かを確認する場合は、.isalnumという英数字のメソッドを使用できます。

if value.isalnum(): 
    # do stuff 
else: 
    # if it contains stuff not alphanumeric 

他の方法は、馬の口からそれを取るためにPythonで完全に受け入れているコメントで述べたいくつかの一つとして

+1

文字列は常に文字列です。 –

+0

@ juanpa.arrivillaga笑今は馬鹿に聞こえて、ちょうどタイトルに従ってそれを書いた – abccd

0

isalphaisdigitisdecimalisidenitifierislower、そしてより多くの...含まれて:

try: 
    complex(x) # should be the most general 
    result = True # Python has no objections 
except ValueError: 
    result = False 

これは+.24E-2+j-1_000_000(のみPython3.6 +)から何かを認識します。唯一の例外(私は信じています):バイナリ、8進数、または16進リテラル(0b10010o770xff)は受け付けません。

また、正規表現ウィザードの場合は、reモジュールがあります。私はここにはありませんが、整数検出器での試みです:

import re 
int_pattern = re.compile('^[+-]?(?:0|(?:[1-9][0-9]*))$') 

int_pattern.match('-13') 
# <_sre.SRE_Match object; span=(0, 3), match='-13'> 
関連する問題