Di Python, panggilan
temp = open(filename,'r').readlines()
hasil yang di daftar di mana setiap elemen suatu baris dalam file. Yang sedikit bodoh tapi masih: readlines()
juga menulis karakter newline untuk masing-masing elemen, sesuatu yang saya tidak inginkan terjadi.
Bagaimana saya bisa menghindari hal itu?
Anda dapat membaca seluruh file dan membagi garis dengan menggunakan str.splitlines
:
temp = file.read().splitlines()
Atau anda dapat strip newline dengan tangan:
temp = [line[:-1] for line in file]
Catatan: solusi terakhir ini hanya bekerja jika file yang berakhir dengan baris, jika baris terakhir akan kehilangan karakter.
Asumsi ini benar dalam kebanyakan kasus (terutama untuk file yang dibuat dengan editor teks, yang sering melakukan tambahkan berakhir newline pula).
Jika anda ingin menghindari hal ini anda dapat menambahkan baris baru pada akhir file:
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]
Atau alternatif yang lebih sederhana adalah untuk strip
yang newline sebagai gantinya:
[line.rstrip('\n') for line in file]
Atau bahkan, meskipun cukup terbaca:
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
Yang mengeksploitasi fakta bahwa nilai kembali atau
isn't boolean, tapi objek yang dievaluasi true atau false.
The readlines
metode ini sebenarnya setara dengan:
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
Sejak readline()
membuat newline juga readlines()
terus.
Catatan: untuk simetri untuk readlines()
yang writelines()
metode tidak tidak tambahkan di akhir baris, sehingga f2.writelines(f.readlines())
menghasilkan salinan dari f
di f2
.
contoh lain:
Membaca file satu baris pada satu waktu. Menghapus karakter yang tidak diinginkan dengan dari akhir string str.rstrip(karakter)
with open(filename, 'r') as fileobj:
for row in fileobj:
print( row.rstrip('\n') )
lihat juga str.strip([karakter])
dan str.lstrip([karakter])
(python >= 2.0)
Coba ini:
u=open("url.txt","r")
url=u.read().replace('\n','')
print(url)
Untuk menghapus semua leading dan trailing spasi putih (terinspirasi dari Абага's Jawaban) -
temp = [line.strip() for line in open("filename")]
Untuk menghapus semua trailing whitspaces termasuk newline -
temp = [line.rstrip() for line in open("filename")]
Jika anda hanya ingin menghapus trailing karakter newline dan spasi putih -
temp = [line.rstrip('\r\n') for line in open("filename")]
P. S. Jika anda menemukan ini bermanfaat maka silahkan upvote dia juga.
def getText():
file=open("ex1.txt","r");
names=file.read().split("\n");
for x,word in enumerate(names):
if(len(word)>=20):
return 0;
print "length of ",word,"is over 20"
break;
if(x==20):
return 0;
break;
else:
return names;
def show(names):
for word in names:
len_set=len(set(word))
print word," ",len_set
for i in range(1):
names=getText();
if(names!=0):
show(names);
else:
break;