【发布时间】:2016-11-10 20:54:48
【问题描述】:
我有一个相当大的 .txt 文件——大约 70K 行。
我正在尝试使用 Python 查找字符串“无法更新”的所有实例。
当我打开文件并在“无法更新”上使用 ctrl-f 时,它会立即找到它;但是,当在 Python 中使用 RegEx 时,.find() 或者如果在其中,它根本找不到字符串。请看下面我用过的三种方法:
正则表达式方法:
f = open('C:\PerfupD.txt', 'r')
strings = re.findall('Cannot update', f.read())
print(strings)
.find():
with open('C:\PerfUpD.txt', 'r') as file:
for line in file:
if line.find('Cannot update') != -1:
print("Errors found")
如果在:
with open('C:\PerfUpD.txt', 'r') as file:
for line in file:
if 'Cannot update' in line:
print("Errors found")
我什至尝试搜索“Ca”,但它什么也找不到,但是当我只搜索“C”时,它会找到大量实例...附带说明的是,这个 .txt 文件是从一个网站生成的最初将文件保存为 .err 文件。然后我将其保存为 .txt。
我唯一能想到的是,文件中的数据可能是以其他形式生成的,但在打开时看起来像常规文本。非常感谢任何见解!
【问题讨论】:
-
所有 3 种方法都应该有效。您可以发布输入文件的摘录吗?我怀疑是大小写问题或非标准的空格字符或可能加倍。
-
文件的路径是否可能已关闭?您可以毫无问题地打印文件的所有行吗?
-
我刚走出去,但会尽快离开。仅供参考,我对 vba 非常擅长,并编写了一个宏来复制 txt 文件中的每一行并将其粘贴到单元格中,但它不会向单元格打印任何内容...
-
查看下面的http://stackoverflow.com/questions/40536818/find-string-in-a-txt-file-using-python/40537121#40537121 答案。基本上你的代码中有一个逻辑错误。找到字符串时 find() 返回 -1。
-
小摘录:跳过 zzzzzz 投资组合,因为截止日期是 16 年 7 月 11 日。处理安全类型组(按货币)。跳过 zzzzzz 投资组合,因为截止日期是 16 年 1 月 22 日。处理安全类型组(按货币)。 zzzzzz 性能(汇总)未更新。无法读取 zzzzzz 性能(汇总)或报告日期范围早于投资组合的开始日期。无法更新 zzzzzz 投资组合,因为截止日期是 11-07-16。处理安全类型组(按货币)。