Python论坛  - 讨论区

标题:[python-chinese] [CPyUG:26261] Re: 中英文混合,词数如何统计?

2007年05月08日 星期二 10:16

Zoom.Quiet zoom.quiet在gmail.com
星期二 五月 8 10:16:35 HKT 2007

On 5/7/07, batfree <batfreelist在gmail.com> wrote:
> batfree 写道:
> > 一段Unicode字符串,里面有 英文,有中日韩语等等,如何其统计其字数。
> > 就是每一个英文单词算一个字符,中日韩语言每个character算一个词,每个标点
> > 符号算一个词。
> > 请问大家用什么统计方法呢?
> >
> >
> >
> 我折腾了一个晚上,最后用了4行算出来了,不知道有没有问题。与大家探讨一下。
> import re
> cjkReg = re.compile(u'[\u1100-\uFFFDh]+?')
> trimedCJK = cjkReg.sub( ' a ', inputString, 0)# replace the CJK with the
> word a
> return  len(trimedCJK.split())
> 做过一部分测试,与Word里面的字数统计数目一样,不过不知道是不是还有问题。
>

收藏到微项目了!感谢分享!!!
http://wiki.woodpecker.org.cn/moin/MicroProj/2007-05-08


-- 
'''Time is unimportant, only life important!
http://zoomquiet.org
blog在http://blog.zoomquiet.org/pyblosxom/
wiki在http://wiki.woodpecker.org.cn/moin/ZoomQuiet
scrap在http://floss.zoomquiet.org
douban在http://www.douban.com/people/zoomq/
____________________________________
Pls. use OpenOffice.org to replace M$ Office.
     http://zh.openoffice.org
Pls. use 7-zip to replace WinRAR/WinZip.
     http://7-zip.org/zh-cn/
You can get the truely Freedom 4 software.
'''

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月08日 星期二 17:34

fdu.xiaojf在gmail.com fdu.xiaojf在gmail.com
星期二 五月 8 17:34:29 HKT 2007

Zoom.Quiet wrote:
> On 5/7/07, batfree <batfreelist在gmail.com> wrote:
>   
>> batfree 写道:
>>     
>>> 一段Unicode字符串,里面有 英文,有中日韩语等等,如何其统计其字数。
>>> 就是每一个英文单词算一个字符,中日韩语言每个character算一个词,每个标点
>>> 符号算一个词。
>>> 请问大家用什么统计方法呢?
>>>
>>>
>>>
>>>       
>> 我折腾了一个晚上,最后用了4行算出来了,不知道有没有问题。与大家探讨一下。
>> import re
>> cjkReg = re.compile(u'[\u1100-\uFFFDh]+?')
>> trimedCJK = cjkReg.sub( ' a ', inputString, 0)# replace the CJK with the
>> word a
>> return  len(trimedCJK.split())
>> 做过一部分测试,与Word里面的字数统计数目一样,不过不知道是不是还有问题。
>>
>>     
>
> 收藏到微项目了!感谢分享!!!
> http://wiki.woodpecker.org.cn/moin/MicroProj/2007-05-08
>
>   
好像gbk里面中文是两个字节,英文是一个字节,
可以直接拿gbk编码的长度和unicode编码的长度比较的

 >>> s = 'abc你好你好def你好你好'
 >>> len(s)
22
 >>> u = s.decode('gbk')
 >>> len(u)
14
 >>> length_a = len(u)             #总字符数
 >>> length_c = len(s) - len(u)    #中文字符数
 >>> length_e = 2*len(u) - len(s)  #英文字符数
 >>> length_a, length_c, length_e
(14, 8, 6)
 >>> a = u.encode('gbk')
 >>> a
'abc\xc4\xe3\xba\xc3\xc4\xe3\xba\xc3def\xc4\xe3\xba\xc3\xc4\xe3\xba\xc3'
 >>> len(a)
22

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年05月08日 星期二 22:59

batfree batfreelist在gmail.com
星期二 五月 8 22:59:22 HKT 2007

fdu.xiaojf在gmail.com 写道:
> Zoom.Quiet wrote:
>   
>> On 5/7/07, batfree <batfreelist在gmail.com> wrote:
>>   
>>     
>>> batfree 写道:
>>>     
>>>       
>>>> 一段Unicode字符串,里面有 英文,有中日韩语等等,如何其统计其字数。
>>>> 就是每一个英文单词算一个字符,中日韩语言每个character算一个词,每个标点
>>>> 符号算一个词。
>>>> 请问大家用什么统计方法呢?
>>>>
>>>>
>>>>
>>>>       
>>>>         
>>> 我折腾了一个晚上,最后用了4行算出来了,不知道有没有问题。与大家探讨一下。
>>> import re
>>> cjkReg = re.compile(u'[\u1100-\uFFFDh]+?')
>>> trimedCJK = cjkReg.sub( ' a ', inputString, 0)# replace the CJK with the
>>> word a
>>> return  len(trimedCJK.split())
>>> 做过一部分测试,与Word里面的字数统计数目一样,不过不知道是不是还有问题。
>>>
>>>     
>>>       
>> 收藏到微项目了!感谢分享!!!
>> http://wiki.woodpecker.org.cn/moin/MicroProj/2007-05-08
>>
>>   
>>     
> 好像gbk里面中文是两个字节,英文是一个字节,
> 可以直接拿gbk编码的长度和unicode编码的长度比较的
>
>  >>> s = 'abc你好你好def你好你好'
>  >>> len(s)
> 22
>  >>> u = s.decode('gbk')
>  >>> len(u)
> 14
>  >>> length_a = len(u)             #总字符数
>  >>> length_c = len(s) - len(u)    #中文字符数
>  >>> length_e = 2*len(u) - len(s)  #英文字符数
>  >>> length_a, length_c, length_e
> (14, 8, 6)
>  >>> a = u.encode('gbk')
>  >>> a
> 'abc\xc4\xe3\xba\xc3\xc4\xe3\xba\xc3def\xc4\xe3\xba\xc3\xc4\xe3\xba\xc3'
>  >>> len(a)
> 22
>
>   
需要计算英文的单词数,不是字符数,而且可能还有法语,德语等,我是查了
Unicode的表然后用了替换的方式来解决的,不过也可能会有更好的解决方法,在
这儿与大家讨论一下。看有没有更高效准确的方法。


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号