2016-04-23 5 views
3

私は、テキストファイルを作成し、使用してPythonでそれを開いた:収納intまたはSTR

for word_in_line in open("test.txt"): 

をループにtxtファイル内の行の言葉で。

テキストファイルがあるだけで1行、持っている:私は.split()を使用してリストを作るとき

int 111 = 3 ; 

を:

print("Input: {}".format(word_in_line)) 
line_list = word_in_line.split() 

それが作成されます。

['int', '111', '=', '3', ';'] 

そして、私はいたがline_list[1]'111')が整数かどうかをチェックする方法を探しています。

しかし、type(line_list[1])を試してみると''のためstrと表示されています。

私の目標は、あなたがあなたのリストを持っている何文字列ですtxtファイルを読んで、それは整数またはSTRまたは他のデータ型であるかどうかを確認、などのために

答えて

5

です。したがって、来るタイプは正しいと期待されます。

あなたが探しているのは、あなたの文字列内のすべての数字であるかどうかを確認することです。だからisdigit文字列メソッドを使用行うこと:あなたがここに検証しようとしている正確に何によって

line_list[1].isdigit() 

を、このソリューションは、まさにそれを提供したいすべてが純粋に数字いる場合があります。

何らかの番号が付いているかどうかを確認したい場合もあります。たとえば、10.5です。これはisdigitが失敗するところです。このような場合はthisの回答をご覧になり、回答があるかどうかを確認する方法float

+0

ありがとうございます! <3私はそれを感謝します。 – Eric

+0

@ KevinJ.Chaseヘッドアップありがとう。私は正しい答えをリンクすることを忘れてしまったようでした。 FWIW、それは実際にこの質問のもう一つの答えでした。 – idjaw

2

私は上記の回答に同意しません。

@ idjawの答えがline_list[1].isdigit()のような文字列解析では、奇数の場合に失敗します。たとえば、数字が浮動小数点で、50というようにドットで始まる場合はどうなりますか?上記のアプローチはうまくいきません。技術的には、この例ではintを気にしますので、これは問題ではありませんが、一般的には危険です。

一般に、文字列が有効な数値かどうかを確認する場合は、文字列を数値に変換し、それに応じてエラーを処理することをお勧めします。

def isNumber(string): 
    try: 
     val = int(string) 
     return True 
    except ValueError: 
     return False 
+0

OK。しかし、私はそれがdownvotableだとは思わない。それは少し厳しいです。私はあなたがしていることを得ており、これは素晴らしいアプローチです。何かあれば、これも追加できました。だから、私の答えはより完全なものになるでしょう。しかし間違っているわけではありません。 – idjaw

+1

私はあなたを断念しました。たぶんそれは技術的に厳しいかもしれませんが、私は本当に何かがintであるかどうかをテストするこのメソッドを使用することに反対します。 – gnicholas

+0

あなたが正しいです。 FWIWこれに答えるこのアプローチは、彼らがちょうど出発したと考えて、OPにとってそれを簡単に保つことでした。これは私の個人的なものをテストする方法とは関係ありません。いい答えだ。 – idjaw

関連する問題