2017-04-04 119 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个问题,你应该知道这一点。 –