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

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • Fullscreen

    Fullscreen

    23 Mart 2006
  • TechRax

    TechRax

    21 EYLÜL 2009