、1は通常、パラメータを指定せずに、文字列のsplit
方法を使用しています。のPython:Pythonでスペースで文字列を分割するには、すべてのスペース文字によって分割列
しかし、昨日のように単語の間ZERO WIDTH SPACEを使用した文字列全体に走りましたよく(JavaScriptの人々の間で)短いblack magicパフォーマンスに私の新しい知識を変わって、私はsplit
が十分でないため、すべてのwhitespace charactersによって、より良い分割する方法をお願いしたいと思います:
>>> u'a\u200bc d'.split()
[u'a\u200bc', u'd']
UPD1
sth
で提案されている解決策は、一般的には動作しますが、いくつかのOS設定やPythonコンパイルオプションに依存しています。確かな理由を知っているといいでしょう(Windowsで設定を有効にすることができれば)。
UPD2 cptphil
は、すべてが明確にその偉大linkを見つけました:
だから私は問題についてUnicodeの技術委員会に連絡し、速やかに戻って応答を受信した受信しました。
がにZsのからU + 200Bゼロ幅スペースを変更する:彼らはZWSPが空白とみなさワンス・アポン・ア・タイム、だったが、それはunicode siteからのUnicode 4.0.1
引用に変更されたことを指摘しましたCf(2003.10.27)
U + 200B Zero Width Space(ZWSP)の使用に関する永続的な問題がありました。この文字の機能は、通常は許可されない位置での改行を許可することであり、したがって、機能的には一般カテゴリがCfの書式文字です。この動作は、Unicode標準でよく記述されており、Unicode文字データベースでは空白文字とはみなされません。しかし、歴史的な理由から、一般的なカテゴリは依然としてZs(Space Separator)であり、キャラクターが誤用される。 ZWSPは空白ではない唯一のZs文字です。一般カテゴリは、ルールの誤解を引き起こす可能性があります。D13ベース文字は、マークを結合するためのベースとしてZWSPを許可します。
U + 200Bの一般カテゴリをZsからCfに変更することを提案します。
解像度:クローズ。 Unicodeバージョン4.0.1では、U + 200Bの一般カテゴリはZsからCfに変更されます。
変更がPythonに反映されました。 Python 2.5.4および2.6.5のu'\u200B'.isspace()
の結果はTrue
であり、Python 2.7.1ではすでにFalse
です。他の空白文字については
定期split
は十分です:
>>> u'a\u200Ac'.split()
[u'a', u'c']
そして、それはあなたのために十分でない場合、Gabi Purcaru
は以下のとおり文字を一つずつ追加します。
'u'a \ u200bc D'.split()' 'を返します[u'a 'u'c' を、u'd」 ] '。これは、UbuntuでPython 2.6.5を使用しています。 – NPE
@aix: '[u'a \ u200bc、u'd ']'を返します(Arch LinuxではPython 2.7.2)。米国のロケール。 –
@aix、hmm、面白い! – newtover