ここの初心者。ファイルから行を読み込もうとしていますが、.txt
ファイルには\n
途中のどこかで、その行を.readline python=で読み取ろうとすると、途中で切り取られ、2行として出力されます。
このウィンドウに行をコピーして貼り付けると、2行で表示されます。だから私はここにファイルをアップロードしました: https://ufile.io/npt3n
また、txtファイルに表示されるファイルのスクリーンショットを追加しました。
。
f= open("f.txt",mode='r',encoding='utf8')
for i in range(4):
lineText=f.readline()
print(lineText)
f.close()
Python 3では、特定のファイルの改行を定義できます。デフォルトのniversal newlinesモードは非常に寛容であるため、ほとんど使用されません。
ストリームから入力を読み取るときに、改行がNoneの場合、ユニバーサル改行モードが有効になります。入力の行は「\ n」、「\ r」、または「\ r\n」で終わることができ、これらは呼び出し元に返される前に「\ n」に変換されます。
したがって、ここでは '\ r\n'のみが行末であることを明示する必要があります。
f= open("f.txt",mode='r',encoding='utf8', newline='\r\n')
# use enumerate to show that second line is read as a whole
for i, line in enumerate(fd):
print(i, line)
Readline関数を使用する代わりに、正規表現でコンテンツ全体を読み、行を分割できます。
import re
with open("txt", "r") as f:
content = f.read()
# remove end line characters
content = content.replace("\n", "")
# split by lines
lines = re.compile("(\[[0-9//, :\]]+)").split(content)
# clean "" elements
lines = [x for x in lines if x != ""]
# join by pairs
lines = [i + j for i, j in Zip(lines[::2], lines[1::2])]
すべてのコンテンツが同じ開始[...]である場合、これで分割でき、「」要素を省略してすべての部分をクリーンアップします。次に、各部分をZip関数で結合できます( https://stackoverflow.com/a/5851033/1038301 )