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

  • ipsy

    ipsy

    1 EKİM 2012
  • Showtime

    Showtime

    21 HAZİRAN 2006
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009