1

私はPythonを初めて使用し、ここで見つけた例の1つを使用して、ファイルから行を読み取り、それらを印刷しています。私が理解していないのは、インタプリタが\nエスケープシーケンスを無視する理由です。

テキストファイル:

次のうち、PC内にある可能性のあるコンポーネントはどれですか?(正解をすべて選択してください。)

A.CPU

B.マザーボード

C.キーボード

回答:A、B、およびE。\ n PC内の一般的なコンポーネントには、\ n CPU 、マザーボード、および\ nRAMが含まれます。

Pythonコード:

questions_fname="Test.txt"

with open(questions_fname, 'r') as f:
    questions = [line.strip() for line in f]

for line in questions:
    print (line)


f.close()

私が得る結果は次のような文字列です:

Answers: A, B, and E. \nCommon components inside a PC include \nthe CPU,motherboard, and \nRAM

画面に合わせて長い行をフォーマットする簡単な方法を探していました。

4

4 に答える 4

4

ファイルから読み取って"\n"いるので、文字列にはありません。"\\n"必要な場合"\n"は、文字列をデコードする必要があります。3.x には がないstr.decode()ため、2.x からそのメカニズムを使用できないことに注意してください。

3>> codecs.getdecoder('unicode-escape')('foo\\nbar')[0]
'foo\nbar'
于 2013-01-07T10:06:46.187 に答える
0

次のコードを試して、目的の動作を取得してください...

questions_fname = "Test.txt"

with open(questions_fname) as f:
    for line in f:
        line = line.rstrip().replace('\\n', '\n')
        print(line)

.rstrip()、バイナリ形式の を含め、末尾の空白を削除し\nます。は、ファイル コンテンツ内のシーケンスの.replace()明示的なユーザー定義の解釈を引き起こし\nます - 印刷可能な文字の\後にn.

withコンストラクトを使用する場合、これf.close()は自動的に行われます。

于 2013-01-07T11:09:45.830 に答える
0

\テキスト ファイルではなく、Python スクリプトでのみエスケープ文字です。テキスト ファイルを読み取るとき、Python はすべてのバックスラッシュを\\に変換するため、ファイルを読み取るときは、改行文字では\nない\\n

于 2013-01-08T04:49:07.790 に答える
-1

申し訳ありませんが、これはPython 3.xでは無効です(タグを見ていました)が、参照としてここに残しておきます-@Ignacioの回答を参照してください:https ://stackoverflow.com/a/14193673/1252759

raw stringリテラル文字を含むを効果的に取得した場合は'\n'、文字列を再解釈して、エスケープシーケンスに戻すことができます。

>>> a = r"Answers: A, B, and E. \nCommon components inside a PC include \nthe CPU,motherboard, and \nRAM"
>>> print a
Answers: A, B, and E. \nCommon components inside a PC include \nthe CPU,motherboard, and \nRAM
>>> print a.decode('string_escape')
Answers: A, B, and E. 
Common components inside a PC include 
the CPU,motherboard, and 
RAM

textwrap特定のディスプレイの特定の幅に線を折り返したい場合は、モジュールを確認することもできます...

于 2013-01-07T10:03:56.473 に答える