3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Twitter における文字数カウント

Last updated at Posted at 2012-10-13

ツイートの文字数 - Nullified Construction

に影響を受けて、 Python で書いた奴を公開しようと思います。

第 1 の壁

カウントでなにより大事なのが、 URI を 20 文字として扱うことです。 URI なら簡単に正規表現で取り出せるはずなのですが、流石最近クソな Twitter さん、スキーマがなくても URI として認識します!素敵(白目)

スキーマ無しでも抽出できるのは、 Twitter の中の人のものすごい努力で満ちた正規表現のおかげです。

twitter-text-java/src/com/twitter/Regex.java at master · twitter/twitter-text-java

もはや何が何だか。

これを Python に翻訳すればいいのですが、 Python の正規表現が時代おくれすぎて、いろいろ対応してないんです><

ひたすらエラーになるところを潰して、こんな感じになりました。

twikoto3/twikoto3/twittertext/regex.py at master · azyobuzin/twikoto3
URI に関係するところしか、作っていません。

予想以上に Python が酷い…。

第 2 の壁

あとは、正規化して文字数を数えればいいんです。数えればいいんですが、問題は、コードポイント単位で数えなければいけないのです。

これは、 Unicode がメインになった Python 3 でも対応していなくて、大分悩みました。

そんなときに出会ったのがこれ

codepoint.py

パブリックドメインなので好き勝手できますね。 Python 3 で動かすにはすこし修正が必要ですが、すごく簡単にコードポイント単位で数えることができます。

import codepoint

text = "吉野屋" #http://blog.unfindable.net/archives/2728 をやりたかったのですが、 Qiita のバグで死にました
length = len(codepoint.characters(text))

これでカウントできました!!

コードの全貌はこちら

twikoto3/twikoto3/twittertext at master · azyobuzin/twikoto3

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?