Pythonの変数の型が文字列かどうかを調べる方法はありますか。
isinstance(x,int);
整数値の場合
Python 2.xでは、あなたはそうするでしょう
isinstance(s, basestring)
basestring
は、 抽象スーパークラスstr
とunicode
の/です。オブジェクトがstr
またはunicode
のインスタンスであるかどうかをテストするために使用できます。
Python 3.xでは、正しいテストは
isinstance(s, str)
bytes
クラスはPython 3では文字列型とは見なされません。
これは古いトピックですが、Googleで最初に表示されるトピックであり、満足のいく答えが見つからないことを考えると、今後の参考のためにここに残します。
six はすでにこの問題を扱っているPython 2と3の互換ライブラリです。その後、このようなことをすることができます:
import six
if isinstance(value, six.string_types):
pass # It's a string !!
コードを調べて、これがあなたが見つけたものです:
import sys
PY3 = sys.version_info[0] == 3
if PY3:
string_types = str,
else:
string_types = basestring,
Python 3.xまたはPython 2.7.6
if type(x) == str:
型モジュールは、整数や文字列以上のものをチェックしている場合にも存在します。 http://docs.python.org/library/types.html
できるよ:
var = 1
if type(var) == int:
print('your variable is an integer')
または
var2 = 'this is variable #2'
if type(var2) == str:
print('your variable is a string')
else:
print('your variable IS NOT a string')
お役に立てれば!
以下のより良い答えに基づいて編集してください。 3つの答えについて調べて、ベースストリングのクールさについて調べてください。
昔の答え:Unicode文字列に注意してください。これは、WindowsのすべてのCOM呼び出しなど、いくつかの場所から入手できます。
if isinstance(target, str) or isinstance(target, unicode):
ユニコードを含むPython 2/3
from __future__ import unicode_literals
from builtins import str # pip install future
isinstance('asdf', str) # True
isinstance(u'asdf', str) # True
basestring
はPython 3では定義されていないので、この小さなトリックはコードの互換性を保つのに役立つかもしれません:
try: # check whether python knows about 'basestring'
basestring
except NameError: # no, it doesn't (it's Python3); use 'str' instead
basestring=str
その後、Python 2とPython 3の両方で次のテストを実行できます。
isinstance(myvar, basestring)
他の人からたくさんの良い提案がここで提供されています、しかし私は良いクロスプラットフォーム要約を見ません。以下はPythonプログラムに適したドロップインです。
def isstring(s):
# if we use Python 3
if (sys.version_info[0] >= 3):
return isinstance(s, str)
# we use Python 2
return isinstance(s, basestring)
この関数では、入力がPython 3のstr
かPython 2のbasestring
かを確認するためにisinstance(object, classinfo)
を使用します。
また、変数の型が特定の種類であるかどうかを確認したい場合は、変数の型を既知のオブジェクトの型と比較することもできます。
文字列のためにあなたはこれを使うことができます
type(s) == type('')
そう、
変数が文字列かどうかをチェックするためのオプションはたくさんあります。
a = "my string"
type(a) == str # first
a.__class__ == str # second
isinstance(a, str) # third
str(a) == a # forth
type(a) == type('') # fifth
この順序は目的のためです。
a = '1000' # also tested for 'abc100', 'a100bc', '100abc'
isinstance(a, str) or isinstance(a, unicode)
trueを返します
type(a) in [str, unicode]
trueを返します
ベース文字列を使用しない、Python 2の代替方法:
isinstance(s, (str, unicode))
unicode
は(Python 3では)定義されていないので、それでもPython 3では動作しません。
これらの要件とともに、Python 2とPython 3の両方をサポートするための私の答えは次のとおりです。
six
または同様のcompatモジュールの使用は避けてください。import sys
PY2 = sys.version_info.major == 2
# Check if string (lenient for byte-strings on Py2):
isinstance('abc', basestring if PY2 else str)
# Check if strictly a string (unicode-string):
isinstance('abc', unicode if PY2 else str)
# Check if either string (unicode-string) or byte-string:
isinstance('abc', basestring if PY2 else (str, bytes))
# Check for byte-string (Py3 and Py2.7):
isinstance('abc', bytes)
Myvarが文字列かどうかをテストするには、これも使用できます。
if type(myvar) == str
もしあなたが外部のライブラリに依存したくないのであれば、これはPython 2.7以降とPython 3の両方で動作します( http://ideone.com/uB4Kdc ):
# your code goes here
s = ["test"];
#s = "test";
isString = False;
if(isinstance(s, str)):
isString = True;
try:
if(isinstance(s, basestring)):
isString = True;
except NameError:
pass;
if(isString):
print("String");
else:
print("Not String");
Pythonで変数の型をチェックするために、あなたはtype functionを使うことができます。例えば出力str
を与えるtype('hello')
isinstance 関数を使用すると、入力データが string または unicode の形式であることを確認できます。以下の例はあなたが簡単に理解するのを助けるでしょう。
>>> isinstance('my string', str)
True
>>> isinstance(12, str)
False
>>> isinstance('my string', unicode)
False
>>> isinstance(u'my string', unicode)
True