0

私は現在、繁体字の大規模なサンプルで各文字が使用される回数を推定しようとしています。言葉ではなく文字に興味があります。このファイルには、句読点と西洋文字も含まれています。

繁体字のサンプルファイルを読んでいます。このファイルには、繁体字の大きなサンプルが含まれています。ここに小さなサブセットがあります:

首映鼓掌10分鐘評語指不同意《花樣年華》国片在柏林首映、完場後取全場鼓掌10分鐘。影展放映的《一代宗師》版本教李小龍武功葉問決戰散打王</ p>

矯正一增加的戲分是開場時葉話(梁朝偉陶)</ p>

私の戦略は、各行を読み、各行をリストに分割し、各文字を調べて、リストまたは文字の辞書にすでに存在するかどうかを確認することです。その文字がリストまたは辞書にまだ存在しない場合は、そのリストに追加します。リストまたは辞書に存在する場合は、その特定の文字のカウンターを増やします。おそらく、2つのリスト、文字のリスト、およびカウントを含む並列リストを使用します。これはより多くの処理になりますが、コーディングもはるかに簡単になるはずです。

私はまだこの点の近くに到達していません。

サンプルファイルを正常に読み取ることができます。次に、ファイルの各行のリストを作成できます。これらの個々の行を出力ファイルに印刷して、元のファイルを再構成することができます。繁体字中国語はそのまま表示されます。

しかし、特定の行の各文字のリストを作成しようとすると、問題が発生します。

次の記事を読みました。私はコメントの多くを理解しましたが、残念ながら、私の問題を解決するのに十分なコメントを理解することができませんでした。 単語の区切り文字として空白を使用しない言語(中国語など)で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

単語の区切り文字として空白を使用しない言語(中国語など)でPython split()を実行する方法の回答者'flow'から、これを使用したいということですか?:

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 に答える