【问题标题】:Comparing string with text file in python在python中将字符串与文本文件进行比较
【发布时间】:2021-05-22 22:53:43
【问题描述】:

我正在尝试将字符串与文本文件中的文本进行比较。但由于某种原因,即使我已经将文本文件中的文本复制并粘贴到我的字符串中,它的返回结果还是不一样。我还检查了how to compare a string with a text file 以确保我做对了,所以我对为什么这不起作用感到非常困惑。

string = "This is working"
x = open('work.txt').read()
print(string)
print(x)
print(x is string)

文本文件的内容是This is working,当我运行代码时,我得到下面的输出

This is working
This is working

False

编辑: 我也试过了:

if string == open('work.txt').read():
    print("Working")
else:
    print("Not working")

这也给出了Not working

【问题讨论】:

  • 请注意 is== 不是一回事。您可以阅读有关文档中差异的更多信息
  • @SuperStew 我都试过了,但对他们来说都是假的。
  • 请提供预期的minimal, reproducible example (MRE)。我们应该能够复制和粘贴您的代码的连续块,执行该文件,并重现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和所需的输出来测试我们的建议。您发布的代码无法运行,因为您没有包含输入数据。
  • 我们希望您执行基本诊断以包含在您的帖子中。至少,在错误点打印可疑值并将其追溯到其来源。在许多情况下,做这个基本诊断会告诉你问题出在哪里,你根本不需要 Stack Overflow。由于您未能打印和检查相关数据值的类型,我们真的无法处理您声称== 也失败的说法。您是否在 read 中添加了换行符?
  • 替换 == 也适用于我,很确定这是唯一的问题

标签: python string text txt


【解决方案1】:

试试这个

print(x == string)

【讨论】:

  • 也显示为假。我也试过了。
  • x 末尾有一个换行符,因此False 之前的空行。
【解决方案2】:

如前所述,您应该使用== 而不是is 来检查两个问题是否相等。另外,请注意第二个打印语句输出和结果输​​出之间的额外行。那是因为你从文件中读取的字符串中有一个换行符,所以它们不是同一个字符串。

如果你去掉换行符,他们应该比较:

string = "This is working"
x = open('work.txt').read().strip()
print(string)
print(x)
print(x == string)

【讨论】:

  • 这是正确答案。谢谢你。我编辑了我的问题以表明我同时使用了==is,并且最初是从== 开始的,但它不起作用所以我也添加了is。如何添加换行符?该文本文件实际上只是复制和粘贴。
  • 我只能猜测。您使用的任何编辑器都可能在文件的最后一行添加换行符。也有可能你在Ctrl+V 之后不假思索地点击了Enter 并保存了它。无论如何,文件中显然有一个换行符。
  • 我认为 Emacs 一定是自己添加了它,因为我刚才积极尝试删除它并且它一直在回来。谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
相关资源
最近更新 更多