Pythonでは、呼び出し
temp = open(filename,'r').readlines()
各要素がファイル内の行であるリストが表示されます。ちょっとばかげていますが、それでも:readlines()
は各要素に改行文字を書きますが、これは望んでいません。どうすればそれを避けることができますか?
ファイル全体を読み、 str.splitlines
を使用して行を分割することができます。
temp = file.read().splitlines()
または、改行を手で削除することもできます。
temp = [line[:-1] for line in file]
注: この最後の解決策は、ファイルが改行で終わっている場合にのみ機能します。それ以外の場合、最後の行は文字を失います。
この仮定は、ほとんどの場合に当てはまります(特にdoとにかく末尾の改行を追加する)テキストエディタによって作成されたファイルの場合)。
これを避けたい場合は、ファイルの最後に改行を追加することができます。
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]
あるいは、もっと簡単な方法は、代わりに改行をstrip
することです。
[line.rstrip('\n') for line in file]
あるいは、なかなか読めませんが。
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
これは、or
の戻り値がブール値ではなく、trueまたはfalseと評価されたオブジェクトであるという事実を悪用します。
readlines
メソッドは、実際には次のものと同等です。
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()
は改行も保持するので、readlines()
もそれを保持します。
注: はreadlines()
と対称にするために writelines()
メソッドはnotで終了改行を追加しないので、f2.writelines(f.readlines())
はf2
に正確なf
のコピーを生成します。
temp = open(filename,'r').read().split('\n')
もう一つの例:
ファイルを一度に1行ずつ読み込みます。文字列の末尾から不要な文字を削除する str.rstrip(chars)
with open(filename, 'r') as fileobj:
for row in fileobj:
print( row.rstrip('\n') )
str.strip([chars])
とstr.lstrip([chars])
も参照してください。
(python> = 2.0)
temp = open(filename,'r').read().splitlines()
これが最善の選択肢だと思います。
temp = [line.strip() for line in file.readlines()]
これを試して:
u=open("url.txt","r")
url=u.read().replace('\n','')
print(url)
my_file = open("first_file.txt", "r")
for line in my_file.readlines():
if line[-1:] == "\n":
print(line[:-1])
else:
print(line)
my_file.close()
import csv
with open(filename) as f:
csvreader = csv.reader(f)
for line in csvreader:
print(line[0])