【发布时间】:2017-06-27 20:32:53
【问题描述】:
我在一个文件中有一个日期,在另一个文件中有一个日期。它们看起来像这样:
log1.log -> “06/11/2017”
和
log2.log -> “06/11/2017”
专门找这样的匹配,我写了这么一点:
if row != date:
pass
elif row == date:
print("match found")
而且我已经尝试过制定逻辑,而不是检查不等式,而是检查是否相等;但它没有用。我还将找到的值导出到一个新的文本文件中,并检查了在终端中很难检测到的空格或换行符。没有骰子。
将日期打印到终端确认它们确实匹配。
示例输出:
[#] 06/13/2017 06/13/2017
当我打印它们时,它们之间有一个空格,并使用哈希表示法来保持打印输出看起来井井有条。
我尝试的最后一件事是在比较中表面地将它们都转换为字符串。我疯了吗?这是怎么回事?
除了数据本身,我可以提供任何东西。但是,我们实际上只是在讨论 .log 文件,其中包含我使用 split 抓取的行,因此我提供上面的输出以排除任何数据问题。
编辑:当你编辑我的帖子时,你绝对扼杀了我的语法和可读性,伙计。当你完成它时,就英语而言,它是胡言乱语。让我们先不管它,k?这句话的主语是“逻辑”。我编辑回来的内容很好。而且您不需要否认“空白”的复数形式。它已经暗示它可能有多个实例。
【问题讨论】:
-
每个日志文件中是否只有一行?您是按行号还是一行与整个文件进行比较?
-
它们可能是字符串中的不可见字符。尝试将它们转换为字节并比较结果。
-
每个日志的倍数和 log2 中的每隔一行都是空白的。我将粘贴代码。 pastebin.com/xP0pibEc
-
尝试用
print([ord(x) for x in row], [ord(x) for x in date])替换print(" [#] "+str(row)+' '+str(date))- 这将打印两个字符串中字符的实际 ASCII 代码。 -
好吧,这样就解决了 -
date来自一个只是 ASCII 的文件(48 代表0,54 代表6等),但 row 不是乙>。它可能是 UCS2/UTF-16 编码,您应该在opening 该文件时声明该编码。
标签: python string comparison evaluation