Dize için arama txt dosyası Python | Netgez.com
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

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • H3Ctic (old channel)

    H3Ctic (old

    23 Mart 2011
  • The Computer Chronicles

    The Computer

    7 Kasım 2012