Java guyがPythonに移行しています。Python構文:値(文字列)が文字列か数値かをチェックして何かをするにはどうすればいいですか
文字列が文字列か数字かを確認してから、何かしたいのですが、この構文でエラーが発生します。
if value.isdigit() == True
do something
else:
if value.isdigit == False
do something.
Java guyがPythonに移行しています。Python構文:値(文字列)が文字列か数値かをチェックして何かをするにはどうすればいいですか
文字列が文字列か数字かを確認してから、何かしたいのですが、この構文でエラーが発生します。
if value.isdigit() == True
do something
else:
if value.isdigit == False
do something.
ステートメントと明示的なブール比較をディッチします。また、value.isdigit
の代わりにvalue.isdigit()
を使用し、if ...
の末尾にコロンを付けることを忘れないでください。
if value.isdigit():
# only digits
else:
# not only digits
明示的なブール値を取り除き、処理したものが機能します。感謝@gyreとすべての答えです。 – Raghu
私はあなたのエラーは何だったのか分かりませんが、2つのif文の後にコロンが欠けています。また、文字列がアルファベットか数字かを確認する場合は、.isalnum
という英数字のメソッドを使用できます。
if value.isalnum():
# do stuff
else:
# if it contains stuff not alphanumeric
他の方法は、馬の口からそれを取るためにPythonで完全に受け入れているコメントで述べたいくつかの一つとして
文字列は常に文字列です。 –
@ juanpa.arrivillaga笑今は馬鹿に聞こえて、ちょうどタイトルに従ってそれを書いた – abccd
isalpha
、isdigit
、isdecimal
、isidenitifier
、islower
、そしてより多くの...含まれて:
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進リテラル(0b1001
、0o77
、0xff
)は受け付けません。
また、正規表現ウィザードの場合は、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'>
どうしますか? – zengr
これはうまくいきます: 'value.isdigit():print(" A digit ")else:print(" Not a digit ")' – zengr
文字列は常に数字ではなく文字列です。それを確認するコードは必要ありません。文字列にintまたはfloatを呼び出してintまたはfloatを生成できるかどうかをチェックしたい場合は、それを呼び出して、そうでないと判明したら例外をキャッチします。 (これはPythonで普通に行うことです) 'isdigit'はあなたが知る必要があることを教えません。たとえば、 '--'記号を拒否します。 – user2357112