10

オンラインで大部分の英語の単語のリストを見つけましたが、改行はUNIXスタイル(Unicodeでエンコード:UTF-8)です。私はこのウェブサイトでそれを見つけました:http://dreamsteep.com/projects/the-english-open-word-list.html

改行をCRLFに変換して、それらを反復処理できるようにするにはどうすればよいですか?それらを使用するプログラムはファイルの各行を通過するため、単語は1行に1つずつである必要があります。

これはファイルの一部です:bitbackbitebackbiterbackbitersbackbitesbackbitingbackbittenbackboard

そのはず:

bit
backbite
backbiter
backbiters
backbites
backbiting
backbitten
backboard

ファイルをこのタイプに変換するにはどうすればよいですか?注:これは26個のファイル(1文字に1個)で、合計で80,000語程度です(したがって、プログラムは非常に高速である必要があります)。

Unicodeを使用したことがないため、どこから始めればよいかわかりません。前もって感謝します!

rU(提案されているように)パラメーターとして使用し、これを私のコードで使用します:

with open(my_file_name, 'rU') as my_file:
    for line in my_file:
        new_words.append(str(line))
my_file.close()

このエラーが発生します:

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    addWords('B Words')
  File "D:\my_stuff\Google Drive\documents\SCHOOL\Programming\Python\Programming Class\hangman.py", line 138, in addWords
    for line in my_file:
  File "C:\Python3.3\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 7488: character maps to <undefined>

誰かがこれを手伝ってくれますか?

4

4 に答える 4

18

変換する代わりに、Python のユニバーサル改行サポートを使用してファイルを開くことができるはずです。

f = open('words.txt', 'rU')

( に注意してくださいU。)

于 2012-12-19T14:53:16.380 に答える
13

文字列の置換メソッドを使用できます。お気に入り

txt.replace('\n', '\r\n')

編集:
あなたの場合:

with open('input.txt') as inp, open('output.txt', 'w') as out:
    txt = inp.read()
    txt = txt.replace('\n', '\r\n')
    out.write(txt)
于 2012-12-19T14:51:57.387 に答える
2

ファイルを反復できるようにするために、ファイルの行末を変換する必要はありません。NPE で提案されているように、単にpython のユニバーサル改行モードを使用してください。

UnicodeDecodeError は、処理しているファイルが UTF-8 としてエンコードされているために発生し、 を介して内容をバイトから文字列にデコードしようとするとstr(line)、Python はcp1252エンコーディングを使用して、ファイルから読み取ったバイトを Python 3 文字列 (つまり、一連の Unicode コード ポイント)。ただし、これらのファイルには、エンコーディングでデコードできないバイトがありcp1252、UnicodeDecodeError が発生します。

に変更str(line)するline.decode('utf-8')と、UnicodeDecodeError を取得しなくなります。テキスト対をチェックしてください。Unicode Vs の代わりにデータ。詳細については、 8 ビットの記事を参照してください。

最後に、 Joel Spolsky によるThe Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)も役立つかもしれません。

于 2012-12-19T22:30:49.727 に答える