Pythonでテキストファイルを読み込んだときに、行毎に分割したリストにする
Pythonでテキストファイルを読み込んでデータを処理する際に、1行毎に分割してリストにすると便利な場合がありますので、分割してみます。
目次
splitメソッドで分割する
splitメソッドの分割文字に改行文字を指定すれば、改行文字のところで分割してリストにしてくれます。
ret = str.split([sep], [maxsplit])
変数 |
型 |
内容 |
---|---|---|
str |
str |
分割の対象になる文字列オブジェクト。 |
sep |
str |
省略可。既定値はNone。分割する文字。 |
maxsplit |
int |
省略可。既定値は-1。分割する数。 |
ret |
list |
分割した結果。文字列のリスト。 |
maxsplitが-1のときは、できる限りの分割をします。
試してみましょう。
こういう文書のファイルを読み込んで、splitで分割してリストにしてみます。
難波津に咲くやこの花冬ごもり今は春べと咲くやこの花
ちはやぶる神代も聞かず竜田川からくれなゐに水くくるとは
瀬をはやみ岩にせかるる滝川のわれても末に逢はむとぞ思ふ
憂かりける人を初瀬の山おろしよ激しかれとは祈らぬものを
もろともにあはれと思え山桜花よりほかに知る人もなし
>>> with open('test.txt', mode='rt', encoding='utf-8') as f:
... text = f.read()
>>> text.split('\n')
['難波津に咲くやこの花冬ごもり今は春べと咲くやこの花',
'ちはやぶる神代も聞かず竜田川からくれなゐに水くくるとは',
'瀬をはやみ岩にせかるる滝川のわれても末に逢はむとぞ思ふ',
'憂かりける人を初瀬の山おろしよ激しかれとは祈らぬものを',
'もろともにあはれと思え山桜花よりほかに知る人もなし',
'']
分割できました。
空文字がリストの最後に入っていますが、これは元の文字列の最後の行の末に改行文字があるためです。元の文字列が分割文字で終わっていても、そこで分割してしまうのですね。
splitlinesメソッドで分割する
splitlinesメソッドも、文字列を行毎に分割したリストを作ります。
ret = str.splitlines([keepends])
変数 |
型 |
内容 |
---|---|---|
str |
str |
分割の対象になる文字列オブジェクト。 |
keepends |
bool |
省略可。既定値はFalse。結果に改行を含めるか。 |
ret |
list |
分割した結果。文字列のリスト。 |
試してみましょう。
上記と同じテキストファイルを読み込んでみます。
>>> with open('test.txt', mode='rt', encoding='utf-8') as f:
... text = f.read()
>>> text.splitlines()
['難波津に咲くやこの花冬ごもり今は春べと咲くやこの花',
'ちはやぶる神代も聞かず竜田川からくれなゐに水くくるとは',
'瀬をはやみ岩にせかるる滝川のわれても末に逢はむとぞ思ふ',
'憂かりける人を初瀬の山おろしよ激しかれとは祈らぬものを',
'もろともにあはれと思え山桜花よりほかに知る人もなし']
>>> text.splitlines(True)
['難波津に咲くやこの花冬ごもり今は春べと咲くやこの花\n',
'ちはやぶる神代も聞かず竜田川からくれなゐに水くくるとは\n',
'瀬をはやみ岩にせかるる滝川のわれても末に逢はむとぞ思ふ\n',
'憂かりける人を初瀬の山おろしよ激しかれとは祈らぬものを\n',
'もろともにあはれと思え山桜花よりほかに知る人もなし\n']
splitlinesは、元の文字列の最後についている改行文字を無視します。ですから、splitのときとは異なって空のデータがリストにありませんね。
また、splitlinesはLF単独も、CR単独も、CRLFも改行文字と判定します。気になるときにはこちらが便利だと思います。
公開日
広告