我有一个奇怪的问题就像这样,我发现这是由于编码。不幸的是,这个问题似乎更加神秘。
我的文件中的行看起来像这样:
�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)
它没有用。
在我搜索的字符串后面有一个空格,所以我也搜索了“已经发生了超时。”但是我不认为这应该没关系。
我甚至不知道从哪里开始。如果我用正确的编码打开文件,它应该只是工作。
答案 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)
,然后查看文件是否发生变化。