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
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.
Nasıl algılamak "enter" vardi...
Nasıl bir desen önünde bir yeni satır ...
Nasıl Perl'in yazdırma varsayılan...
VB.NET IntelliSense : otomatik tamamla...
Fgets sonundaki yeni satır karakteri ç...