0

我目前正在尝试估计每个字符在大量繁体汉字样本中的使用次数。我对字符而不是文字感兴趣。该文件还包括标点符号和西方字符。

我正在阅读繁体中文字符的示例文件。该文件包含大量繁体中文字符样本。这是一个小子集:

映鼓掌10分钟评语指不及《花样年华》该片在柏林首映,首场后获全场10分钟。影展功放的《李一代师》版本教小龙武叶问决战散打王</p>

另一个增加的戏分是开场时叶问(梁朝伟饰)</p>

我的策略是读取每一行,将每一行拆分为一个列表,然后检查每个字符以查看它是否已存在于列表或字符字典中。如果该字符尚不存在于我的列表或字典中,我会将其添加到该列表中,如果它确实存在于我的列表或字典中,我将增加该特定字符的计数器。我可能会使用两个列表,一个字符列表和一个包含计数的并行列表。这将是更多的处理,但也应该更容易编码。

我还没有接近这一点。

我能够成功读取示例文件。然后我可以为我的文件的每一行列出一个列表。我可以将这些单独的行打印到我的输出文件中,然后重新构建原始文件,繁体中文就完好无损。

但是,当我尝试列出特定行上的每个字符时,我遇到了麻烦。

我已经阅读了以下文章。我理解了许多评论,但不幸的是,无法理解足够多的评论来解决我的问题。 如何在不使用空格作为单词分隔符的语言(如中文)上执行 Python split()?

我的代码如下所示

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import codecs

wordfile = open('Chinese_example.txt', 'r')

output = open('Chinese_output_python.txt', 'w')

LINES = wordfile.readlines()

通过各种测试,我确信以下行没有将字符串 LINES[0] 拆分为其组成汉字。

A_LINE = list(LINES[0])

output.write(A_LINE[0])
4

2 回答 2

0

成功分割一行繁体中文字符..我只需要知道处理编码字符的正确语法..非常基本。

my_new_list = list(unicode(LINE[0].decode('utf8')));

于 2013-02-12T20:44:18.167 回答
0

我的意思是你想使用这个,来自How to do a Python split() on Languages (like Chinese) that don't use whitespace as word separator?

from re import compile as _Re

_unicode_chr_splitter = _Re( '(?s)((?:[\ud800-\udbff][\udc00-\udfff])|.)' ).split

def split_unicode_chrs( text ):
  return [ chr for chr in _unicode_chr_splitter( text ) if chr ]
于 2013-02-10T23:43:09.230 回答