Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@yamtnort

テキストファイルを読み込む(python3)

More than 1 year has passed since last update.

何番煎じかよくわからないけれど、自分用メモです。
適宜更新。

1行1要素のリストとして読み込む(改行コードあり)

with open("hoge.txt",'r') as f:
    lines = f.readlines()

readlinesは各行を要素としたリストを作る。各要素はstr型。
各行末尾にある改行コードを気にしないのであればこれでオッケー。(どんなとき…?いつも消えててほしいんだけど。)

1行1要素のリストとして読み込んで、各要素を区切り文字で更に分割する (190604追記)

with open("hoge.txt") as f:
    lines = f.readlines()
for s in lines:
    list = s.split("任意の区切り文字")

とかすると、ある行を区切り文字で分けたものが要素として含まれるようなリストが得られる。
(もっとスマートな方法がありそうな気もするが…)

ここまでは文末の改行コードが含まれてしまっていたが、改行コードを消したい場合は下の通り。

1行1要素のリストとして読み込む(改行コードなし)

list = []
for i in open("hoge.txt", 'r').readlines():
    istrp = i.rstrip('\n') 
    list.append(istrp)

readlinesで作ったリストの各要素に対して改行コードの削除処理。
3行目でrstripを用いて、各行末尾に含まれる改行コードを削除。
この改行コード、OSやバージョンごとに違うらしいので注意。
ファイルはopenしたらcloseが原則必要だが、for文の中でopenしているときはwith open同様に自動的にクローズされる。

(190604 追記)

with open("hoge.txt") as f:
    lines = f.read().splitlines()
print(lines)

コメントに頂いたこちらの方法だと、改行コードを気にせず、改行コードを消した状態の行を要素に持つリストが生成できる。
コメントくださった@shiracamus様ありがとうございます。

UnicodeDecodeError: 'ascii' codec can't decode byte 0x83 in position 122: ordinal not in range(128)を回避する (20190615追記)

日本語を含むようなtxtファイルhoge.txtを読み込もうとしたところ、タイトルのようなエラーが出た。
回避するには、codecsモジュールのopenでエンコーディングとエラーに対する処理を指定してファイルを開く必要があった。

with codecs.open("hoge.txt", 'r', 'ascii', 'ignore') as f:
   lines = f.readlines()
1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
yamtnort

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?