2013-02-10 65 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

相關問題