-
Notifications
You must be signed in to change notification settings - Fork 0
/
normalizer.py
48 lines (36 loc) · 1.61 KB
/
normalizer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import re
import mojimoji
class BasicNormalizer:
def normalize(self, str):
"""
日本語文字列を正規化する。
全角の英数字・記号が半角に変換されること。(カタカナは除く)
>>> normalizer = BasicNormalizer()
>>> normalizer.normalize('日本語あいうえおアイウエオ')
'日本語あいうえおアイウエオ'
>>> normalizer.normalize('0123456789')
'0123456789'
>>> normalizer.normalize('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> normalizer.normalize('abcdefghijklmnopqrstuvwxyz')
'abcdefghijklmnopqrstuvwxyz'
>>> normalizer.normalize('a !”#$%&’()*+,−./:;<=>?@[¥]^_‘{|}〜')
'a !"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~'
改行文字・タブ文字が空白に置換されること。
>>> normalizer.normalize('a\\tb\\rc\\nd')
'a b c d'
連続する空白が圧縮されること。
>>> normalizer.normalize('a b c d')
'a b c d'
前後の空白文字が削除されること。
>>> normalizer.normalize('\\t\\r\\n a\\t\\r\\n ')
'a'
"""
str = mojimoji.zen_to_han(str, kana = False)
str = re.sub('[\t\r\n]', ' ', str)
str = re.sub(' {2,}', ' ', str)
str = str.strip()
return str
if __name__ == "__main__":
import doctest
doctest.testmod()