使用
这些码点范围,我们可以编写一个
is_cjk
函数:
cjk_ranges = [
( 0x4E00, 0x62FF),
( 0x6300, 0x77FF),
( 0x7800, 0x8CFF),
( 0x8D00, 0x9FCC),
( 0x3400, 0x4DB5),
(0x20000, 0x215FF),
(0x21600, 0x230FF),
(0x23100, 0x245FF),
(0x24600, 0x260FF),
(0x26100, 0x275FF),
(0x27600, 0x290FF),
(0x29100, 0x2A6DF),
(0x2A700, 0x2B734),
(0x2B740, 0x2B81D),
(0x2B820, 0x2CEAF),
(0x2CEB0, 0x2EBEF),
(0x2F800, 0x2FA1F)
]
def is_cjk(char):
char = ord(char)
for bottom, top in cjk_ranges:
if char >= bottom and char <= top:
return True
return False
我们可以使用函数如
filter
、
any
、
all
和
map
来处理文本,以字符为单位处理文本,或组合更复杂的函数。
txt = "./data/NCDC/上海/虹桥/9705626661750dat.txt"
txt_sanitized = "./data/NCDC/9705626661750dat.txt"
any(map(is_cjk, txt))
any(map(is_cjk, txt_sanitized))
''.join(filter(is_cjk, txt))
请注意,CJK 范围将包括不仅是汉字,还可能包括韩文和日文字符。对于更复杂的用法,请尝试使用专门的库,例如
cjklib
。
r
。这里是一个例子。 - Wiktor Stribiżewipath = "./data/NCD"
,字符串前不需要加上u
。 - Tushar