Chinaunix

标题: 如何从一个文件中提取中文字符 [打印本页]

作者: aaaaa5aa    时间: 2011-04-02 10:09
标题: 如何从一个文件中提取中文字符
现有一个网页内容,我怎么从其中提取出中文字符来
  1. <strong class="title">javascript:if(confirm('http://ikan.pptv.com/p/10789711/  \n\nτ¼��Teleport Pro ȡ»أ¬ӲΪ ̼μœ&#773314;·¾¶3¬1��ʨ׃μķ¶Χ¡£  \n\nţҪ′ӷ�ϴ&#785099;�))window.location='http://ikan.pptv.com/p/10789711/'" tppabs="http://ikan.pptv.com/p/10789711/" target="_ikanp" title="美女匪帮" jsvalue="hightlight">美女匪帮</a>
  2. <dd class="intro">
  3. 党中央专区首长同志的女儿塔尼亚在敖德萨旅游的三天里,正赶上一个外号叫“会计师”的坏人的行动,扑朔迷离的绑架,扣人心弦的歼灭战,浪漫的爱情、坚固的友情和伟大的亲情穿插其中。最后坏…</dd>
  4. 导演:暂无信息
复制代码
请问我怎么提取:
  1. 美女匪帮

  2. 党中央专区首长同志的女儿塔尼亚在敖德萨旅游的三天里,正赶上一个外号叫“会计师”的坏人的行动,扑朔迷离的绑架,扣人心弦的歼灭战,浪漫的爱情、坚固的友情和伟大的亲情穿插其中。最后坏…</dd>
  3. 导演:暂无信息
复制代码
来呢
作者: lenovo    时间: 2011-04-02 11:25
我对网页格式不懂。
中文字符是在特定格式下才会出现还是说这个文档
里面任何一个字符都可能是中文字符?
如果是有格式的,你解析格式既可。
否则的话,你需要得到文件的编码方式,然后根据编码方式
遍历每个字符来判断是不是中文字符。
像gb2312和utf-8,它们对中文字符的编码不同。
作者: aaaaa5aa    时间: 2011-04-06 10:30
这个还没解决
作者: OwnWaterloo    时间: 2011-04-08 12:44
本帖最后由 OwnWaterloo 于 2011-04-08 12:46 编辑

回复 1# aaaaa5aa

一段 elisp 代码:

  1. ":";exec emacs --script $0 $*
  2. (setq-default enable-multibyte-characters nil)
  3. (ignore-errors
  4.   (let (line)
  5.     (while t
  6.       (set 'line (string-to-multibyte (read-from-minibuffer "")))
  7.       (dotimes (i (length line))
  8.         (when (eq 'chinese-gbk (char-charset (aref line i)))
  9.           (write-char (aref line i)) ) )
  10.       (write-char ?\n) ) ) )
复制代码

  1. ./extract.el < input.htm > chinese.txt

  2. τμ·μΧ£′美女匪帮美女匪帮

  3. 党中央专区首长同志的女儿塔尼亚在敖德萨旅游的三天里,正赶上一个外号叫“会计师”的坏人的行动,扑朔迷离的绑架,扣人心弦的歼灭战,浪漫的爱情、坚固的友情和伟大的亲情穿插其中。最后坏…
  4. 导演:暂无信息
复制代码
前面几个古怪的字母也被算进去了……



完成主要功能的是那个 char-charset 函数, 可以获得一个字符所属的charset。
ascii, unicode, chinese-gbk, latin-iso8859-2 等。
(这方面的术语很混乱, 反正 Emacs 把上述这些叫做 charset)

unicode 标准除了规定每个character 的 codepoint, 可能还有规定那些区间是属于哪些文字吧。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2