2017-04-04 121 views
-4

我在數據文件內循環每行(包含由空格分隔的「字段」),並想要將一個字段的子字符串與另一個靜態值進行比較。如果比較結果爲真,我想打印一個字符串'X',否則'Y'。只是想知道如何使用Python來完成。任何幫助,將不勝感激。謝謝。比較打印語句中的兩個字符串並相應地打印值

代碼: -

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我探索和瀏覽谷歌,但真的沒有發現任何事情在打印語句中執行條件打印... – 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,並試圖通過編寫代碼來爲他/她編寫代碼。這不會使這個答案有關(如果它是,這將是一個重複[this](http://stackoverflow.com/questions/11880430/how-to-write-inline-if-statement-for-打印)反正)。 – TigerhawkT3

-2

你可以使用內嵌的if語句 -

"Correct" if some_condition else "InCorrect" 

如果條件爲真,這將返回「正確」。

但我真的建議你使用一些中間變量。你的代碼是不可讀的。

-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個問題,你應該知道這一點。 –