2013-02-10 71 views
0

我目前正在尝试估计每个字符在大量繁体中文字符中使用的次数。我对个字符不感兴趣。该文件还包括标点符号和西方字符。制作一个字符串中的繁体中文字符列表

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

首映鼓掌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() 

通过各种测试,我相信下面的行不分裂串线[0]成组成中国字。

A_LINE = list(LINES[0]) 

output.write(A_LINE[0]) 
+0

如果您只需要一个中文字符列表,请在您链接的问题中按照建议的答案建议:)。如果你需要通过中国话来分裂,祝你好运,只有令人难以置信的智能程序可以做到这一点。就这样你知道 - 你不需要用文字分割然后按字符分割。你可以马上分割字符,没有什么能阻止你这么做:) – Patashu 2013-02-10 23:26:56

+0

我只需要分割*字符*。我知道中文单词可以是多个字符,但我不需要这些。 但是,文章中列出的解决方案之一不符合我的知识和我的情况: list(u“这是一个句子”) 该代码成功地将每个字符放入列表元素中。但是,由于我正在处理一个名为LINES [0]的变量......我无法成功使用该代码。我尝试了列表(ü“LINES [0]”),但这不会被解释为LINES [0]表示的中文字符串。 – 2013-02-10 23:32:48

+0

然后只需从http://stackoverflow.com/a/3798790/497106接受的答案复制代码,你就完成了:) – Patashu 2013-02-10 23:33:35

回答

0

成功分割线的中国传统人物..我刚知道正确的语法处理编码字符..很基本。 my_new_list = list(unicode(LINE [0] .decode('utf8')));}};

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 ] 
+0

在我的上下文中,我的字符串LINES [0]如何应用?一个更大的列表元素?我已将该文本复制到我的代码中? – 2013-02-10 23:46:14

+0

我真的不知道如何实现这个解决方案,在我添加了这个函数之后,我该如何调用它,并让它分离我的LINES [0]? – 2013-02-11 00:01:00

+0

如果您对字符串使用split_unicode_chrs,它会将其分割成unicode字符列表。 – Patashu 2013-02-11 00:05:38

相关问题