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

  • kamaniusilelis

    kamaniusilel

    10 HAZİRAN 2011
  • Leigh Momii

    Leigh Momii

    10 Mayıs 2006
  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012