SORU
8 EYLÜL 2012, CUMARTESİ


Bir dosyaya yeni satır okumadan

Python, çağrısında bulundu

temp = open(filename,'r').readlines()

her element dosyasında bir satırı bir liste olur. Ama hala biraz aptal: readlines() de her öğe için, olmasını istemiyorum bir şey. yeni satır karakteri yazar Bunu nasıl bertaraf edebilirim?

CEVAP
8 EYLÜL 2012, CUMARTESİ


Dosyanın tamamını okuyabilir ve çizgiler str.splitlines kullanarak bölünmüş:

temp = file.read().splitlines()

Veya el ile yeni satır şerit:

temp = [line[:-1] for line in file]

Not:bu son çözüm, yalnızca dosya bir satır ile sona ererse çalışır, aksi halde son satırı bir karakter kaybedersiniz.

Bu varsayım çoğu durumda gerçek (özellikle dosyaları metin Editörleri tarafından oluşturulan, genellikleyapınsonu zaten yeni satır ekleyin.

Eğer bunu önlemek istiyorsanız dosyanın sonuna bir yeni satır ekleyebilirsiniz:

with open(the_file, 'r ') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]

Ya da daha basit bir alternatif 13 ** yeni satır yerine:

[line.rstrip('\n') for line in file]

Hatta, çok okunmaz halde

[line[:-(line[-1] == '\n') or len(line) 1] for line in file]

or dönüş değeri boolean, ama doğru ya da yanlış değerlendirilmiş bir nesne olmadığı gerçeği patlatır.


readlines yöntem aslında eşdeğerdir:

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines

readline() yeni satır tutar beri de readlines() tutar.

Not:readlines() simetri writelines() yöntemi yokdeğilbiten yeni satır ekleme f2.writelines(f.readlines()) f2 24 *tam bir kopyasını oluşturur.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • disneychannel

    disneychanne

    19 ŞUBAT 2006
  • FD2097

    FD2097

    21 HAZİRAN 2009
  • spederson7

    spederson7

    17 Temmuz 2006