1. ホーム
  2. python

Python で文字列を確実に分割するにはどうすればよいですか? 文字列がパターンやすべての n 個の要素を含んでいないかもしれません。

2023-10-27 06:23:47

質問

Perlでは、私は行うことができます。

my ($x, $y) = split /:/, $str;

そして、文字列がパターンを含んでいてもいなくても動作します。

しかし、Pythonでは、これは動作しません。

a, b = "foo".split(":")  # ValueError: not enough values to unpack

このような場合にエラーを防ぐための正規の方法は何ですか?

どのように解決するのですか?

もし、(あなたの例のように)2つの部分だけに分割する場合には str.partition() を使用すると、引数展開のサイズが 3 になることが保証されます。

>>> a, sep, b = 'foo'.partition(':')
>>> a, sep, b
('foo', '', '')

str.partition() は、セパレータが見つかっても見つからなくても、常に3タプルを返します。

Python 3.xのための別の選択肢は 拡張イテラブルアンパッキング :

>>> a, *b = 'foo'.split(':')
>>> a, b
('foo', [])

これは、最初の分割項目を a に、残りの項目があればそのリストを b .