2017-04-04 7 views
-4

データファイル内の各行(空白で区切られた「フィールド」を含む行)をループしていて、あるフィールドの部分文字列を別の静的値と比較したい。比較が真であれば、文字列 'X'を、それ以外の場合は 'Y'を出力したいと思います。ちょうどそれがPythonを使ってどのようにできるのだろうと思っています。どんな助けもありがとう。ありがとう。printステートメント内の2つの文字列を比較し、それに応じて値を出力します。

コード: -

for i in inputm[1:]:  
    print('\n',i[0].split(':')[0] 
       ,str(datetime.strptime(i[0].split(':')[1],'%Y%m%d'))[:10] 
       ,i[1],round(sum(float(v) if v else 0.0 for v in i[2:6])/4,2) 
       ,i[6][0:23] 
     ) 

入力: -

1:20160101 123 10 20 0 0 http://www.google.com/favorites 
2:20170101 234 20 30 10 0 http://www.doodle.com/favorites 

出力: -

1 2016-01-01 123 7.5 Correct 
2 2017-01-01 234 17.5 InCorrect 

コメント: - 私は本当にこのコードに興味があります。

i[6][0:23] 

http://www.google.comで上記の部分文字列を比較したいとそれらが一致した場合、その後間違って他の正しいプリントだろう。

+0

タプルファイル内の?列の部分文字列ですか?どういうことを言っているのですか?これらの言葉には意味がありますので、標準的な用語に固執してください。そして、印刷声明の中ではどういう意味ですか?第一に、 'print'はPython 3の文ではなく、なぜあなたがなぜそれを内部でやりたいのか分かりません。 –

+0

あなたのためにいくつかのコードを書きたいと思うようです。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この作業を実証するには、これまでに書いたコード([mcve]の作成)、サンプル入力(あれば)、期待される出力、実際に出力するもの(出力、トレースバック、等。)。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [ツアー]と[質問]を確認します。 – TigerhawkT3

+0

@ TigerhawkT3私はここでコードを要求していません... Pythonには新しいので、私はGoogleで調べて閲覧しましたが、実際には印刷文で条件付き印刷を行うためのものは見つかりませんでした。 – Teja

答えて

-1

Pythonはこのようになります三元スタイルの表現の構文を提供しています:

value1 if condition else value2 

印刷することを使用することができます。

x = some_number() 
print('X' if x < 10 else 'Y') 
+1

質問にはすでに条件式が含まれているので、おそらく著者はそれらについて知っています... –

+0

Nah。 OPは約30分前に別の質問からそれを得た。 –

+0

はい、今日OPが今日のPythonをピックアップしたように見えますが、SOを彼/彼女のために書くためにコードを生成しようとしています。それはこの回答を関連性のあるものにしません(そうであれば、[this]の複製になります(http://stackoverflow.com/questions/11880430/how-to-write-inline-if-statement-for-印刷)とにかく)。 – TigerhawkT3

-2

文の場合は、インラインで使用することができます -

"Correct" if some_condition else "InCorrect" 

条件がTrueの場合、 "Correct"が返されます。

しかし、実際にはいくつかの中間変数を使用することをお勧めします。あなたのコードは読めません。

-1

は一度、分割統治に全力を尽くすしようとしないでください:

# read the lines 
with open('myfile.txt', 'rb') as fp: 
    rows = fp.readlines() 

# split the lines into fields 
rows = [row.split() for row in rows] 

# create a function to format field values 
def fmt_row(row): 
    res = [] 
    res += row[0].split(':') # split the first field on : 
    res += [float(field) for field in row[1:-1]] # convert all but first/last field to float 
    date = res[1] 
    res[1] = '%s-%s-%s' % (date[:4], date[4:6], date[6:]) 
    return res 

# convert/format all the rows 
rows = [fmt_row(row) for row in rows] 

# finally create the output 
output = [[ 
    row[0], # first output field 
    row[1], # second.. 
    round(sum(row[2:-1]/4), 2), 
    'Correct' if row[-1] == 'http://www.google.com/favorites' else 'InCorrect' 
] for row in rows] 

# print the output? 
print '\n'.join([' '.join(row) for row in output]) 
+0

それは動作しません... – Teja

+0

@Teja: "それは動作しません"有用な問題の声明ではなく、あなたの名前に150以上の質問で、あなたはそれを知っている必要があります。 –

関連する問題