2016-11-10 689 views
0

我有一個相當大的.txt文件 - 大約70K行。使用Python在txt文件中查找字符串

我正在嘗試使用Python來查找字符串「無法更新」的所有實例。

當我打開文件並在「無法更新」上使用ctrl-f時,它立即發現它;但是,在Python,.find()中使用RegEx時,或者如果使用RegEx,則無法找到該字符串。請參閱我用以下三種方法:如果在

with open('C:\PerfUpD.txt', 'r') as file: 

    for line in file: 

      if line.find('Cannot update') != -1: 

       print("Errors found") 

正則表達式的方法:

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 'Cannot update' in line: 

       print("Errors found") 

我甚至嘗試尋找「Ca」,它找不到任何東西,但是當我搜索「C」時,它發現了大量的實例...一方面說明這個.txt文件是從最初將文件保存爲.err文件的網站生成。然後我將它保存爲.txt。

我能想到的唯一的事情是,可能文件中的數據是以某種其他形式生成的,但在打開時看起來像常規文本。任何有識之士都非常感謝!

+3

所有3種方法應該工作正常工作。你可以發佈你的輸入文件的提取?我懷疑是案件問題還是非標準或可能翻倍的空間字符。 –

+0

是否有可能文件路徑關閉?你可以打印文件的所有行沒有任何問題? – chatton

+0

我剛剛離開,但將盡快完成。只是僅供參考,我與VBA相當不錯,並寫了一個宏來複制txt文件中的每一行,並將其粘貼到單元格,但它沒有向單元格打印任何內容... – AssemblyRequired

回答

0

你很可能只是這樣做:

f = open('your file.txt', 'r+') 
for line in f: 
    if 'Cannot Update' in line: 
     print('error found') 

不需要正則表達式

0

我也覺得你的代碼應該沒有任何問題

+0

這應該是一條評論。 – Zety