SORU
9 ŞUBAT 2011, ÇARŞAMBA


Dize için arama txt dosyası Python

Eğer bir dize bir metin dosyası olup olmadığını kontrol etmek istiyorum. Eğer, Eğer, Eğer, Y. Ancak olmazsa X, bu kodu her zaman nedense True döndürür. Herkes neyin yanlış olduğunu görebiliyor mu?

def check():
    datafile = file('example.txt')
    found = False
    for line in datafile:
        if blabla in line:
            found = True
            break

check()
if True:
    print "true"
else:
    print "false"

CEVAP
9 ŞUBAT 2011, ÇARŞAMBA


Sen her zaman True almasının sebebi zaten verilmiş, sadece bir öneri sunacağım:

Eğer dosya çok büyük değilse, bir dize içine okuyun ve o (ve daha hızlı okuma ve satır başına satır kontrol'den daha sık) kullanabilirsiniz

if 'blabla' in open('example.txt').read():
    print "true"

Başka bir numara: hafifletmek olası bellek ile problem mmap.mmap() oluşturmak için bir "sicim gibi" nesne kullanan temel dosya (yerine okuma bütün dosyasında bellek):

import mmap
f = open('example.txt')
s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
if s.find('blabla') != -1:
    print 'true'

NOT: python 3, mmaps gibi davranır bytearray nesneler yerine, dizeleri, çok subsequence bakmak için find() Bir bytes nesne yerine bir dize de, örn. s.find(b'blabla'):

#!/usr/bin/env python3
import mmap

with open('example.txt', 'rb', 0) as file, \
     mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ) as s:
    if s.find(b'blabla') != -1:
        print('true')

Ayrıca 15 *örneğin*, büyük / küçük harf duyarlı arama düzenli ifadeler kullanabilirsiniz: if re.search(br'(?i)blabla', s):

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • metal571

    metal571

    30 Mayıs 2006
  • MndsgnVEVO

    MndsgnVEVO

    26 Kasım 2013