ホームページ > バックエンド開発 > Python チュートリアル > 行を変数に分割すると複数値のアンパック エラーが発生するのはなぜですか?

行を変数に分割すると複数値のアンパック エラーが発生するのはなぜですか?

Linda Hamilton
リリース: 2024-11-13 16:35:03
オリジナル
663 人が閲覧しました

Why Does Splitting a Line into Variables Result in a Multiple Value Unpacking Error?

行分割での複数の値のアンパック エラー

split() メソッドを使用してテキスト行を複数の変数に分割すると、次のような問題が発生する可能性があります。解凍するには値が少なすぎるか多すぎることを示す ValueError。これは、分割操作で期待される値の数が割り当てられた変数の数と一致しない場合に発生します。

発生理由

split() メソッドは入力を分割します。文字列を、指定された区切り文字に基づいて部分文字列のリストに変換します。区切り文字の数が必要な数よりも少ない場合、予想される数よりも少ない値が返されます。逆に、区切り文字が予想よりも多い場合、分割操作により割り当てられる変数よりも多くの値が生成されます。

一般的な原因: 空行

一般的な理由このエラーの原因は、入力ファイルの末尾に空行があることです。分割前にstrip()メソッドを使用して空白を削除すると、空の行は空の文字列に変換されます。区切り文字で空の文字列を分割すると、空のリストが作成されます。

修正または回避策

この問題を解決するには、次の手順に従います。

  1. 入力を検査します: 入力ファイル内のすべての行に、次の文字が少なくとも 1 回出現することを確認します。セパレータ。エラーの原因となる空行を除外します。
  2. 条件付き分割: 条件付きチェックを使用して、区切り文字なしで行が分割されるのを防ぎます。たとえば、分割操作の前に次の行を追加できます。

    if ':' in line:
        questions, answers = line.split(':')
    ログイン後にコピー

この条件により、コロンを含む行のみが分割されます。

  1. 代替アプローチ: Split() を使用する代わりに、正規表現モジュールの re.split() 関数の使用を検討してください。 (再)。この関数を使用すると、分割操作をガイドする正規表現パターンを指定できます。区切り文字に一致するパターンを使用すると、解凍する値の数を一定にすることができます。

以上が行を変数に分割すると複数値のアンパック エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート