我执行以下命令
grep $'\r\n' tmp.txt | wc -l
结果我得到了:
1000
因此,我得出结论,我的文件包含1000行包含\r\n
的行。现在我尝试在Python中做同样的事情:
out = []
finp = 'tmp.txt'
i = 0
for line in open(finp, 'rb').readlines():
if line[-2:] == '\r\n':
#if '\r\n' in line:
out.append(1)
else:
out.append(0)
print(sum(out))
我得到0
作为结果。我在Python中所做的并不完全相同,因为我没有检查一行包含 \r\n
。而不是我用\r\n
检查它是否结束。但是,我不认为这是差异的原因(因为我认为在我的情况下,行以\r\n
结束。)
所以,我的问题是如何检查该行是否包含\r\n
组合。您可能已经注意到我尝试运行if '\r\n' in line
但它会导致错误:
TypeError: a bytes-like object is required, not 'str'
其次,我不确定它会有所帮助。我是否需要做更多的事情以确保Python“看到”grep看到的内容?
答案 0 :(得分:1)
检查行中\r\n
是否正确的正确方法是使用
if b'\r\n' in line
通过这种方式,Python生成的行数与grep相同。