やりたいこと:
4byte文字と3byte文字が混在しているutf8の文字列の場合、4byte文字が混ざっていることを検出したい

(文字コード等への理解が浅い者です)
例えば「田直樹」という文字列があったとします。
一文字目が異体字で4byte、他の3文字はそれぞれ3byteです。こういった入力を許容できない文字として判別したいです。
一文字ずつループしてlen()などで見たらいいのかと思いきや、

s="田直樹"
for x in s.decode("utf8"):print(x)
???
???
田
直
樹

こうなってしまい、一文字ずつ調べるといったことができずに困っています。

文字列をunicodeに変換した際のことですが、下記のように問題の一文字目だけが\Uで開始していることに気づきました。これを判別の材料にできないかと思っているのですが、どうするとこの記号を検出できるのかがわかっておりません。(この判別方法が正しいのかも自信がありません)

s.decode("utf8")
>>> u'\U00020bb7\u7530\u76f4\u6a39'

\Uで始まる文字があったらそれは許容できない文字として判定しようとした場合、どのようにすると実現可能でしょうか。