字符串没有在行中找到,但它显然在那里

时间:2017-07-03 13:51:18

标签: python string search

我有一个奇怪的问题就像这样,我发现这是由于编码。不幸的是,这个问题似乎更加神秘。

我的文件中的行看起来像这样:

�0�6�/�1�3�/�2�0�1�7� �0�9�:�5�0�:�4�8�.�1�3�3� �[�t�3�1�3�6�]� � �<�2�0�0�1�0�4�:�U�s�e�r�E�v�e�n�t�>� � �T�i�m�e�o�u�t� �h�a�s� �o�c�c�u�r�r�e�d�.�

我告诉python打开这个文件来读取行然后告诉我

for line in file: 
    if "Timeout has occurred." in line: 
        print(line)

它没有用。

在我搜索的字符串后面有一个空格,所以我也搜索了“已经发生了超时。”但是我不认为这应该没关系。

我甚至不知道从哪里开始。如果我用正确的编码打开文件,它应该只是工作。

2 个答案:

答案 0 :(得分:0)

我使用了代码:

with open(filename) as file:
    for line in file:
        if "Timeout has occurred in line:
            print(line)

这适用于输出:

"06/13/2017 09:50:48.133 [t3136] <2000104:UserEvent> Timeout has occurred. "

我的纯文本文件正好是

答案 1 :(得分:0)

我创建了一个用UTF-8编码的文件(使用Notepad ++,使用Encoding菜单),并将这一行放入:

06/13/2017 09:50:48.133 [t3136]  <200104:UserEvent>  Timeout has occurred.

我运行了您在pastebin上发布的确切代码,并按预期打印出该行:

  [+] We're going to investigate Shell.log first to find evidence of an issue.
06/13/2017 09:50:48.133 [t3136]  <200104:UserEvent>  Timeout has occurred.
09
09:50:48.133...(trunc 25 chars)

在将第一个文件的编码设置为ANSI后,我运行相同的代码,它仍然有效。 你所描述的情况绝对没有问题。

现在可能是你的文件是用一些奇特的编码编码的,但我们不知道。 如果您使用的是Notepad ++,请尝试将文件转换为UTF-8(Encoding&gt; Convert to UTF-8),然后查看文件是否发生变化。