如何从文本中提取中文符号

如何从文本中提取中文符号

我无法在这里发布中文文本符号,但基本上我只想删除所有不包含至少一个中文符号的行。

http://pastebin.com/au8zeATC

我怎样才能提取它,使它看起来像

http://pastebin.com/5YPvzGJT

答案1

将数据放入文件中data并运行:

perl -CSD -lne 'print if /\p{Han}/' data

也可以看看:

答案2

您想要匹配的是其中之一中的任何内容汉字的 Unicode 块。这意味着您需要使用支持 Unicode 的内容,然后匹配其中包含属于这些块之一的字符的任何行。

不幸的是,grep似乎并不能很好地开箱即用地支持 Unicode。但是,Python 3 可以,所以如果您有,以下脚本将满足您的需要:

import sys

sys.stdout.write("".join( 
   line for line in sys.stdin.readlines()
   if any(    0x4e00 <= ord(ch) <=  0x9fd5    # CJK Unified Ideographs
          or  0x3400 <= ord(ch) <=  0x4dbf    # CJK Unified Ideographs Extension A
          or 0x20000 <= ord(ch) <= 0x2a6d6    # Extension B
          or 0x2a700 <= ord(ch) <= 0x2b73c    # Extension C
          or 0x2b740 <= ord(ch) <= 0x2b81d    # Extension D
          or 0x2b820 <= ord(ch) <= 0x2cea1    # Extension E
          for ch in line)))

相关内容