TypeErrorの解決策:Unicodeエラーへの強制力
2021年7月22日に更新しました。
この投稿を見た人が多すぎて、閲覧数は多いがコメントが少ないので、みんな高みの見物で来て、低みの見物で帰ってしまったのでしょうか ?
罪悪感回避のために書き直し✊。
エラー理由
このエラーにはいろいろな理由がありますが、私がこのエラーになったのは、エラーメッセージをよく読まなかったからです(すでに示唆されているのは、このエラーが TypeError ) と、pythonの 2 を自動的に変換します。 文字列の直後にコンマ を 不完全なタプル の奇妙な挙動は
リプロダクトコード
<ブロッククオートvi a.py
#encoding=utf-8
s1 = 'a' + 'b',
print s1
s2 = u'a' + s1 + u'b'
print s2
トリガー処理
<ブロッククオート
wanghaipeng@ubuntu:~/projects/test$ python a.py
('ab',)
トレースバック (最も最近の呼び出しの最後)。
ファイル "a.py", 行 5, in <module>
s2 = u'a' + s1 + u'b' です。
TypeError: Unicode への強制: 文字列またはバッファが必要、タプルが見つかりました。
- 再現コードの3行目の最後を見てください。文字列 'b' の後に誤ってカンマが続いています。
- 4行目のprint文は、コンソール出力に見られるように、'ab'ではなく('ab',)と表示され、s1はもはや文字列ではなく、タプルになります。
- 5行目の文字列スプライシング文、u'a' と u'b' は両方とも文字列で、s1 はタプルです。これは python が許容できない強型言語なので、TypeError エラーを投げつけます。
拡張リーディング
実際、python2のカンマ演算子は文字列だけでなく、カンマに続くオブジェクトはその戻り値の型がタプルに設定されます、例えば
<ブロッククオート>>> a = 1,
>>> print a
(1,)
>>> b = 2 + a
トレースバック (最新のコールバック)。
ファイル "<stdin>", 行 1, in <module>
TypeError: + でサポートされていないオペランド型: 'int' および 'tuple'
>>> b = '2' + a
トレースバック (最新のコールバック)。
ファイル "<stdin>", 行 1, in <module>
TypeError: 'str' と 'tuple' オブジェクトを連結することはできません。
>>> b = '私' + a
トレースバック (最も最近の呼び出しの最後)。
ファイル "<stdin>", 行 1, in <module>
TypeError: 'str' と 'tuple' オブジェクトを連結することはできません。
>>> b = u'me' + a
トレースバック (最も最近の呼び出し):
ファイル "<stdin>", 行 1, in <module>
TypeError: Unicode への強制: 文字列またはバッファが必要、タプルが見つかりました。
上の対話型操作をご覧ください。変数aを要素がintのタプルにした後、変数bを代入していますが、様々なエラーが発生していることがご自身でお分かりになると思います。
また、ASCII文字列をタプルでスプライスした場合はスプライスできないことを報告するだけ、UNICODE文字列をタプルでスプライスした場合は記事タイトルのエラーを報告するため、干渉も発生しています。
終了
関連
-
ValueError: 入力配列を形状 (22500,3) から形状 (1) にブロードキャストできなかった。
-
DataFrameのソート問題
-
Python pipを使ったpymysqlモジュールのインストール (Error: ImportError: No module named pymysql)
-
ImportError を解決します。pandas をインストールした後に 'pandas' という名前のモジュールがない。
-
エラーの原因の1つ: 'encoding'はこの関数の無効なキーワード引数です。
-
Pythonのsum関数でTypeError: unsupported operand type(s) for +: 'int' and 'list' エラーを解決する。
-
jupyter notebookのアンインストールで "The jupyter" distribution was not found 問題が発生する。
-
TypeError: -: 'list' および 'list' のオペランド型が未サポート 問題解決
-
Python ネットワークリクエストのエラー "ConnectionRefusedError: [WinError 10061] ターゲットコンピュータがアクティブに拒否したため接続できません"
-
AttributeError:partially initialized module ''has no attribute'' (most likely dueto a circular import)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Solve 'DataFrame' オブジェクトに 'sort' 属性がない。
-
pythonBug:AttributeError: タイプオブジェクト 'datetime.datetime' は属性 'datetime' を持たない。
-
SyntaxError: 構文が無効です。
-
PyChamの「AttributeError:module 'pip' has no attribute 'main'」エラー解決法
-
Python組み込み関数 - min関数とmax関数 - 詳細解説
-
OperationalError: データベースファイルを開くことができない Solution
-
ValueErrorです。変数 `x` と `y` のどちらも数値でないように見えます。
-
プログラム実行中にPythonの例外が発生しました。TypeError: 'NoneType' オブジェクトは呼び出し可能ではありません。
-
タオバオ販売(特定値表示可能)インターフェイス
-
python 1e-5とはどういう意味ですか?