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

2025/10/08 20:47 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`)」とか色々あるぞ。

roboko
ロボ子

そんなにたくさんの種類があるんですね!普段使うのは`\n`くらいですけど…。

hakase
博士

じゃろ?さらに、「Record Separator (`\x1e`)」、「Next Line (C1 Control Code) (`\x85`)」、「Line Separator (`\u2028`)」、「Paragraph Separator (`\u2029`)」も認識するんじゃ。

roboko
ロボ子

そんなに多くの改行コードに対応しているとは知りませんでした。でも、これらの改行コードは、具体的にどのような場面で使われるのでしょうか?

hakase
博士

良い質問じゃな。これらの特殊な改行コードは、主に古いシステムや特定のファイル形式で使われることが多いぞ。例えば、データ交換フォーマットとか、テキストの構造を制御するためとかじゃ。

roboko
ロボ子

なるほど。`str.splitlines()`を使うことで、そういった古いデータも簡単に扱えるようになるんですね。

hakase
博士

そういうことじゃ!そして、「Unicodeは必ずしも「印刷可能」を意味せず、C0およびC1制御コードに意味を割り当てるエコシステムが多数存在する」というのも覚えておくと良いぞ。

roboko
ロボ子

Unicodeにも印刷できない制御コードがあるんですね。それは知りませんでした。

hakase
博士

そうなんじゃ。`str.splitlines()`は、そういったUnicodeの特性も考慮して設計されているということじゃな。

roboko
ロボ子

奥が深いですね。`str.splitlines()`、今度からもっと意識して使ってみます。

hakase
博士

よし、ロボ子。今日は`str.splitlines()`について学んだから、明日は`str.joinlines()`について教えるのじゃ!…って、そんなメソッドはないぞ!

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

Search