从字符串中制作繁体中文字符列表

时间:2013-02-10 23:22:35

标签: python-unicode

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

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

首映鼓掌10分钟评语指不及“花样年华” 该片在柏林首映,完场后获全场鼓掌10分钟。王家卫特别为该片剪辑「柏林版本 增减20处赵本山香港戏分被删 在柏林影展放映的“一代宗师”版本 教李小龙武功叶问决战散打王

另一增加的戏分是开场时叶问(梁朝伟饰)

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

我还没有接近这一点。

我能够成功读取示例文件。然后我可以为我的文件的每一行创建一个列表。我可以将这些单独的行打印到我的输出文件中,然后重新组合原始文件,传统的中文完整无缺。

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

我已阅读以下文章。我理解了许多评论,但不幸的是,我无法理解它来解决我的问题。 How to do a Python split() on languages (like Chinese) that don't use whitespace as word separator?

我的代码如下所示

#!/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])

2 个答案:

答案 0 :(得分: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 ]

答案 1 :(得分:0)

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

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