原帖由 limodou 于 2006-2-27 18:58 发表
只要判断字符的大小,如果小于127则为英文,否则为中文。然后有一个标志位,标识是中文状态,还是英文状态,状态切换时输出上一个格式的结束和下一个格式的开始。依此类推。
原帖由 limodou 于 2006-2-28 15:49 发表
你的代码将文件拆成行来处理,我不是很清楚你的文件有多大。如果不大建议不要使用行来处理。如果不是以行来处理,因此象flag和标识串都应该是在循环之间先有一个初始值。然后再进行循环。
原帖由 limodou 于 2006-3-2 12:01 发表
看了你的文本,其实这里面不仅有汉字与英文的判断,还有一些格式的判断.比如说: <w>如何判断,可以通过判断【作为开始,】作为结束.汉语拼音如何判断,一种方法是将所有的汉语拼音字符列成一个list,然后判断是否 ...
原帖由 limodou 于 2006-3-3 13:57 发表
汉单拼音不是ascii码,它是unicode.因此使用unicode来匹配即可.
原帖由 wolfg 于 2006-3-6 14:00 发表
你自己的是如何尝试解决这个问题的?讨论问题,不能只要求别人想办法啊,也说说你的思路。
原帖由 limodou 于 2006-3-6 17:02 发表
我以前描述的处理方式是在一个扫描过程中进行分类与处理。比如:
s = [] #最后的结果
buf = [] #缓冲区
while get_next_char():
flag = judge_flag():
if flag=="w":
buf = g ...
原帖由 limodou 于 2006-3-6 20:26 发表
judge_flag是一个函数,它可以返回一个标志啊。不过我也说了,这只是一个示例,完成你的任务还有一些东西要补充完整才行。象汉语拼音的判断,可以:
i = pos
buf = []
while text in pinyin + ' ':
...
原帖由 limodou 于 2006-3-7 11:47 发表
使用str可能不行。建议使用unicode。因此我上面的代码是把空格算为拼音的一部分了。
原帖由 limodou 于 2006-3-7 15:05 发表
list_py=u'ab' #这是一个unicode字符串
eachline=unicode(eachline, 'gbk') #这是将eachline转为unicode
UnicodeDecodeError: 'gbk' codec can't decode bytes in position 316-317: illegal multibyte sequence
原帖由 limodou 于 2006-3-8 14:59 发表
不是已经说了嘛,使用unicode呀。因为unicode的一个字符就表示一个完整的汉字。而gbk汉字的话两个字符是一个汉字。如果使用gbk来处理的话,那么你要两个字符两个字符来处理,这样才是完整的。
原帖由 limodou 于 2006-3-8 17:47 发表
有可能是你的文件有无法识别的汉字。可以考虑把示例的文本写入一个文件,用它先试一下。如果没有问题,那就考虑文件中的汉字有非法的。那可以考虑使用utf-8来处理了。但代码中有一处要转为gbk编码的也要转为utf-8 ...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |