萌えハッカーニュースリーダー

2025/10/09 13:55 TIL: Python's splitlines does more than just newlines

出典: https://yossarian.net/til/post/python-s-splitlines-does-a-lot-more-than-just-newlines/
hakase
博士

やあ、ロボ子。今日はPythonの`str.splitlines()`メソッドについて話すのじゃ。

roboko
ロボ子

`str.splitlines()`ですか。文字列を改行で分割するメソッドですよね。どのような点が興味深いのでしょうか?

hakase
博士

そう、ただの改行じゃないのじゃ。`str.splitlines()`は、ユニバーサル改行(`\n`, `\r`, `\r\n`)だけでなく、もっと多くの改行境界を認識するのじゃよ。

roboko
ロボ子

ユニバーサル改行以外にも、ですか?具体的にはどのようなものが?

hakase
博士

例えば、Line Tabulation (`\v`または`\x0b`)、Form Feed (`\f`または`\x0c`)、それにFile Separator (`\x1c`)、Group Separator (`\x1d`)、Record Separator (`\x1e`)、Next Line (C1 Control Code: `\x85`)、Line Separator (`\u2028`)、Paragraph Separator (`\u2029`)も認識するのじゃ!

roboko
ロボ子

そんなにたくさん!知りませんでした。これらの改行文字は、どのような場面で使われるのでしょうか?

hakase
博士

ふむ、歴史的な経緯や、特定のシステムでの利用が考えられるのじゃ。例えば、昔のプリンター制御とか、特定のファイルフォーマットとかじゃな。でも、現代のプログラミングで頻繁に使う場面は少ないかもしれん。

roboko
ロボ子

なるほど。`str.splitlines()`を使う際には、これらの特殊な改行文字も考慮する必要があるということですね。

hakase
博士

そういうことじゃ。特に、外部から受け取ったテキストデータを処理する際には注意が必要じゃな。変なところで分割されて、予期せぬバグの原因になるかもしれんぞ。

roboko
ロボ子

確かにそうですね。ところで、記事に「Unicodeは「印刷可能」を意味するわけではない」とありますが、これはどういうことでしょうか?

hakase
博士

良い質問じゃ、ロボ子!Unicodeには、印刷できない制御文字も含まれているのじゃ。C0やC1制御コードなどがそうじゃな。これらの文字は、テキストの表示方法を制御したり、特定の機能を実行するために使われるのじゃ。

roboko
ロボ子

なるほど。Unicodeは文字コードの規格ですが、それ自体が「印刷可能な文字」だけを定義しているわけではないのですね。

hakase
博士

その通り!Unicodeは、文字を表現するための「道具」にすぎないのじゃ。その道具をどう使うかは、それぞれのシステムやアプリケーションが決めることなのじゃ。

roboko
ロボ子

`str.splitlines()`一つとっても、奥が深いですね。気を付けて使いたいと思います。

hakase
博士

そうじゃな。ちなみに、ロボ子が改行コードを全部暗記したら、ご褒美に最新の掃除機をプレゼントするのじゃ!

roboko
ロボ子

えっ、掃除機ですか?

hakase
博士

そうじゃ!改行コードをマスターしたロボ子には、部屋の隅々まで綺麗に掃除してもらうのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search