【发布时间】:2017-08-17 19:15:18
【问题描述】:
我正在使用此代码在 Python 中查找字符串:
buildSucceeded = "Build succeeded."
datafile = r'C:\PowerBuild\logs\Release\BuildAllPart2.log'
with open(datafile, 'r') as f:
for line in f:
if buildSucceeded in line:
print(line)
我很确定文件中有字符串,尽管它没有返回任何内容。
如果我只是逐行打印,它会在每个“有效”字符之间返回大量“NUL”字符。
编辑 1: 问题是 Windows 的编码。我在这篇文章之后更改了编码并且它起作用了:Why doesn't Python recognize my utf-8 encoded source file?
不管怎样,文件看起来是这样的:
Line 1.
Line 2.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
我目前正在使用 Sublime for Windows 编辑器进行测试 - 它在每个“真实”字符之间输出一个“NUL”字符,这很奇怪。
使用 python 命令行我有这个输出:
C:\Dev>python readFile.py
Traceback (most recent call last):
File "readFile.py", line 7, in <module>
print(line)
File "C:\Program Files\Python35\lib\encodings\cp437.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\xfe' in position 1: character maps to <undefined>
感谢您的帮助...
【问题讨论】:
-
1.恐怕“很确定”还不够。 2. 尝试在
if buildSucceeded in line.strip()中使用strip以删除尾随'\n'。 -
尝试
for line in f:,而不是拆分整个文件。然后你可以在打印之前去掉 nul 字符。 -
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。逐行阅读文件,在阅读时打印每一行,然后查看您实际拥有的内容。如果失败,然后将数据文件分成几行,重现问题,并在此处发布输出。
标签: python