2

この文字列を考えると

random_string= '4'

私はこれを行うことができますが、それが整数、文字、または単なる単語かどうかを判断したい

test = int(random_string)
isinstance(test,int) == True

しかし、random_stringに数値が含まれていない場合、エラーが発生することに気付きました

基本的に、random_string は次の形式にすることができます

random_string ='hello'
random_string ='H'
random_string ='r'
random_string ='56'

誰もがこれを行う方法を知っていますが、ちょっと混乱しています。

chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
random_string in chars == True

小文字かどうかを確認するために別の文字列を作成しました。また、単語かどうかを確認するために、文字列の長さを取得しました。長さが複数ある場合は、単語または数字であると判断します

問題は、それが単語か数字かを確認する方法です

助けてください

4

4 に答える 4

4

文字列には、それぞれ文字と数字で構成されているかどうかをテストするisalphaとメソッドがあります。isdigit

>>> 'hello'.isalpha()
True
>>> '123'.isdigit()
True

それらはこれらの文字のみをチェックすることに注意してください。そのため、スペースなどを含む文字列は両方に対して false を返します。

>>> 'hi there'.isalpha()
False

ただし、数値として値が必要な場合は、 を使用した方がよいでしょうintisinstance結果が実際に整数かどうかをチェックしても意味がないことに注意してください。int(blah)成功すると、常に整数が返されます。文字列が整数を表していない場合、例外が発生します。

于 2012-06-25T07:27:50.387 に答える
2

好きなのを選びな。

>>> '4'.isdigit()
True
>>> '-4'.isdigit()
False
>>> int('-4')
-4
>>> 'foo'.isdigit()
False
>>> int('foo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'foo'
于 2012-06-25T07:27:14.300 に答える
2

あなたが求めているロジックを実装するには、最もpythonicな方法は例外処理を使用することだと思います:

try:
  n = int(random_string)
except ValueError: 
  if len(random_string) > 1:
    # it's a word
  else:
    # it's a character (or the empty string)

大文字と小文字を確認するには、 string メソッドを使用できますislower()

于 2012-06-25T07:32:57.390 に答える