当前位置: 首页 > 知识库问答 >
问题:

比较print语句中的两个字符串并相应地打印值[重复]

燕宜修
2023-03-14

我正在循环遍历数据文件中的每一行(包含用空格分隔的“字段”的行),并希望将一个字段的子字符串与另一个静态值进行比较。如果比较为真,我想打印一个字符串“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如果匹配,则打印正确,否则打印不正确。

共有3个答案

昌琪
2023-03-14

您可以使用内联if语句-

"Correct" if some_condition else "InCorrect"

如果条件为真,则返回“正确”。

但我真的建议你使用一些中间变量。您的代码不可读。

上官自明
2023-03-14

不要试图一蹴而就,分而治之:

# 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])
江衡
2023-03-14

Python提供了如下三元风格的表达式语法:

value1 if condition else value2

您可以使用它来打印:

x = some_number()
print( 'X' if x < 10 else 'Y' )
 类似资料:
  • 问题内容: 我有一个简单的疑问。如果有人帮助我,那就太好了。 我有两个字符串: 这两个值相等,但是如何在Java中比较它们呢?我们拥有并用于比较字符串alpha值,类似地,如何比较数字值。 问题答案: 这就对了。您可以使用方法将数字字符串转换为整数,该方法将返回类型。然后比较与相同。

  • 在与字符串进行比较时,我们可以使用或 在中,我们知道它检查引用,但在中它检查内容。 假设有两个字符串 字符串s=“SO”;字符串s1=“SO”; 所以在这种情况下,s1==s和s.equals(s1)都将为真。 但在这里它给了我错误 所以我假设比优先级高 所以在这种情况下 它将像(“s1)==s一样被拆分,现在“s1”将是一个新字符串,因此新字符串永远不会等于s,因此其打印错误 我只是想知道我的想

  • 我试着比较两个值 我得到一个错误

  • 我试图比较两个字符串并识别重复的单词。例如 比较String1和String2将返回单词;“名字”。 我知道有可能将这两个字符串拆分成一个单词数组,然后在二维数组中迭代每个字符串的每个单词。然而,在O(n^2)时,这在计算上是昂贵的,我想知道是否有更快的方法? 谢谢。 编辑:为了清晰起见更改了示例。

  • 我正在尝试这个代码编写练习,我太迷路了! 它甚至不编译,但即使它编译了,我肯定它也不会工作。

  • 问题内容: 我试图在z DBOpenHelper扩展SQLOpenHelper类中编写一个方法。它应该评估数据库中是否存在相同名称的条目。 这是Contact类的相关部分: 现在这是奇怪的事情: 方案A:其中和 等于false。Eclipse调试器显示名称的foo和cname的foo具有不同的id。这两个变量都按之前在代码中所示填充。 方案B:像这样加载变量的地方: 方案C:等于true …但是…