1

現在、Python 2.7を使用して大きなテキストファイルを解析しています。その一部は、元々UnicodeまたはUTF-8でエンコードされていました。

UTF-8の文字列と直接対話する関数を含むモジュールの場合# -*- coding: utf-8 -*-は、ファイルの先頭に含めましたが、ASCIIのみで動作する関数の場合は、気にしませんでした。

最終的に、これらのモジュールはより大きなモジュールにつながり、解析されたすべての文字列が混ざり合います。# -*- coding: utf-8 -*-すべてのファイルの先頭に含めるのは良い習慣ですか?

これにはメリットがありますか?

4

2 に答える 2

8

# -*- coding: utf-8 -*-ソースファイルのエンコーディングのみを宣言します。Pythonが入力または出力を処理する方法とは何の関係もありません。これは、UTF-8を使用して文字列リテラルとコメントを記述できることを意味します。

コーディング宣言の効果は次のとおりです。私がプログラムを持っているとしましょう

# -*- coding: utf-8 -*-
# the following prints the Dutch word "één"
print(u"\xe9\xe9n")

これはコメントが言っていることを正確に行います。しかし、宣言を削除すると、codingクラッシュします。

File "a.py", line 1
SyntaxError: Non-ASCII character '\xc3' in file a.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

1行目がコメントであることに注意してください。コメントを削除することでプログラムを修正できます。

print(u"\xe9\xe9n")

これは、最初のプログラムとまったく同じように動作します。

于 2012-06-14T08:54:35.390 に答える
1

すべてのASCIIファイルも有効なUTF-8です。ASCIIファイルをUTF-8ファイルとして扱うことを心配する必要はありません。変換は必要なく、サイズも大きくなりません。

于 2012-06-14T08:57:40.130 に答える