String」タグアーカイブ

JavaScriptのsplitとjoin

JavaScriptの文字列の分割splitと結合joinについてまとめてみます。

分割split

スペースで分割

'aaa bbb ccc'.split(' ');

実行結果

['aaa', 'bbb', 'ccc']

コンマで分割した場合の最初の3つ

'aa,bb,cc,dd,ee,ff'.split(',', 3);

実行結果

['aa', 'bb', 'cc']

数字があるところで分割

'aa12bb3cc456dd78'.split(/[0-9]+/)

実行結果

['aa', 'bb', 'cc', 'dd', '']

結合join

コンマで結合

['aaa', 'bbb', 'ccc'].join();

実行結果

'aaa,bbb,ccc'

+で結合

['aaa', 'bbb', 'ccc'].join('+');

実行結果

'aaa+bbb+ccc'

リンク

String.prototype.split() – JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/split

Array.prototype.join() – JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/join

PythonでUnicodeEncodeErrorとなる場合に

Pythonで端末のエンコーディング取得はgetpreferredencodingでできます。

>>> import sys
>>> locale.getpreferredencoding()
'cp932'

「あいうえお」と表示するスクリプト(sample.py)

# -*- coding: UTF-8 -*-
s = u'あいうえお'
print s

コマンドプロンプトから

> python.exe sample.py
あいうえお

出力をファイルにリダイレクト

> python.exe sample.py > sample.txt
Traceback (most recent call last):
  File "a.py", line 3, in <module>
    print s
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

エンコーディングを取得するように修正

# -*- coding: UTF-8 -*-
import locale
encoding = locale.getpreferredencoding()
s = u'あいうえお'
print s.encode(encoding)

問題なく表示できます。

> python.exe sample.py
あいうえお

python-chardet

python-chardetを使った文字コード推定

使い方

>>> import chardet
>>> s = 'こんにちは'
>>> chardet.detect(s)
{'confidence': 0.9690625, 'encoding': 'utf-8'}
>>> s.decode(chardet.detect(s)['encoding'])
u'\u3053\u3093\u306b\u3061\u306f'

リンク

chardet · PyPI
https://pypi.org/project/chardet/

GitHub – chardet/chardet: Python 2/3 compatible character encoding detector.
https://github.com/chardet/chardet