404

Java(文字列内)と比較すると、のようなことをします"First Line\r\nSecond Line"

では、通常のファイルに複数の行を書き込むために、Pythonでそれをどのように行うのでしょうか。

4

15 に答える 15

447

それはあなたがどれだけ正しくなりたいかによります。\n通常は仕事をします。本当に正しく理解したい場合は、osパッケージ内の改行文字を検索します。(実際には呼ばれていlinesepます。)

注:Python APIを使用してファイルに書き込む場合は、を使用しないでくださいos.linesep。使用するだけ\nです; Pythonは、それをプラットフォームに適した改行文字に自動的に変換します。

于 2012-07-16T02:16:23.320 に答える
104

改行文字は\nです。文字列内で使用されます。

例:

    print('First line \n Second line') 

\n改行文字はどこにありますか。

これにより、次の結果が得られます。

First line
 Second line

Python 2を使用する場合は、print関数で括弧を使用しません。

于 2013-09-26T15:42:27.357 に答える
28

新しい行を個別に書き込むことも、単一の文字列内に書き込むこともできます。これは簡単です。

例1

入力

line1 = "hello how are you"
line2 = "I am testing the new line escape sequence"
line3 = "this seems to work"

'\ n'は個別に書くことができます:

file.write(line1)
file.write("\n")
file.write(line2)
file.write("\n")
file.write(line3)
file.write("\n")

出力

hello how are you
I am testing the new line escape sequence
this seems to work

例2

入力

他の人が前の回答で指摘したように、文字列の関連するポイントに\nを配置します。

line = "hello how are you\nI am testing the new line escape sequence\nthis seems to work"

file.write(line)

出力

hello how are you
I am testing the new line escape sequence
this seems to work
于 2015-01-04T11:13:02.563 に答える
22

プラットフォームに依存しないラインブレーカー:Linux、Windows、IOS

import os
keyword = 'physical'+ os.linesep + 'distancing'
print(keyword)

出力:

physical
distancing
于 2019-10-26T18:55:45.737 に答える
16

編集:私は今より年上で賢いです。これは、トップレベルのインデント(関数定義など)を使用していなくても正しく機能する、より読みやすいソリューションです。

import textwrap
file.write(textwrap.dedent("""
    Life's but a walking shadow, a poor player
    That struts and frets his hour upon the stage
    And then is heard no more: it is a tale
    Told by an idiot, full of sound and fury,
    Signifying nothing.
"""))

元の答え

一度に複数行のテキストを入力する場合、これが最も読みやすい形式であることがわかります。

file.write("\
Life's but a walking shadow, a poor player\n\
That struts and frets his hour upon the stage\n\
And then is heard no more: it is a tale\n\
Told by an idiot, full of sound and fury,\n\
Signifying nothing.\n\
")

各行の終わりにある\は、新しい行をエスケープします(これによりエラーが発生します)。

于 2015-02-10T16:31:55.023 に答える
12

最も簡単なソリューション

print引数なしで呼び出すだけの場合は、空白行が出力されます。

print

次のようなファイルに出力をパイプすることができます(例を考慮して):

f = open('out.txt', 'w')
print 'First line' >> f
print >> f
print 'Second line' >> f
f.close()

OSに依存しないだけでなく(osパッケージを使用しなくても)、文字列内に配置するよりも読みやすくなり\nます。

説明

このprint()関数には、文字列の末尾にオプションのキーワード引数がありますend。これは、デフォルトでOSの改行文字になります。\n。したがって、呼び出しているときprint('hello')、Pythonは実際に印刷してい'hello' + '\n'ます。つまり、print引数なしで呼び出している場合、実際には印刷'' + '\n'されているため、改行が返されます。

複数行の文字列を使用します。

s = """First line
    Second line
    Third line"""
f = open('out.txt', 'w')
print s >> f
f.close()
于 2017-01-04T12:37:21.017 に答える
10

Pythonでは、改行文字を使用できます。\n

于 2012-07-16T02:15:51.503 に答える
9

他の回答で述べられているように、「改行文字は\nです。文字列内で使用されます」。

最も簡単で読みやすい方法は、新しい行の名前としてnlを使用して「format」関数を使用し、印刷する文字列を印刷する正確な形式に分割することです。

python2:

print("line1{nl}"
      "line2{nl}"
      "line3".format(nl="\n"))

python3:

nl = "\n"
print(f"line1{nl}"
      f"line2{nl}"
      f"line3")

次のように出力されます。

line1
line2
line3

このようにしてタスクを実行し、コードの可読性も高くなります:)

于 2019-11-28T13:43:34.923 に答える
6

と同じように'\n'、おそらくは必要ないでしょうが'\r'。Javaバージョンにある理由はありますか?必要な場合、または必要な場合は、Pythonでも同じように使用できます。

于 2012-07-16T02:15:49.703 に答える
4

「\r」や「\n」など、Javaの文字列リテラルのほとんどのエスケープ文字はPythonでも有効です。

于 2012-07-16T02:17:31.793 に答える
4

\ n-単純な改行文字の挿入は機能します:

# Here's the test example - string with newline char:
In [36]: test_line = "Hi!!!\n testing first line.. \n testing second line.. \n and third line....."

# Output:
In [37]: print(test_line)

Hi!!!
 testing first line..
 testing second line..
 and third line.....
于 2017-12-18T21:46:59.643 に答える
4

インタラクティブなPythonシェルまたはJupyterノートブックを使用して文字列を検査すると、\nおよびその他のバックスラッシュされた文字列が文字通り\tレンダリングされることに注意してください。

>>> gotcha = 'Here is some random message...'
>>> gotcha += '\nAdditional content:\n\t{}'.format('Yet even more great stuff!')
>>> gotcha
'Here is some random message...\nAdditional content:\n\tYet even more great stuff!'

改行、タブ、およびその他の特別な非印刷文字は、印刷またはファイルへの書き込み時にのみ空白としてレンダリングされます。

>>> print('{}'.format(gotcha))
Here is some random message...
Additional content:
    Yet even more great stuff!
于 2020-06-16T00:06:09.067 に答える
2

Python 3では、言語がプラットフォームのネイティブ表現で改行をエンコードします。つまり\r\n、Windowsで、そして\n大人のシステムだけで。

U * xシステムでも、Windowsの行末がテキストモードのファイルを読み取ると、テキストに対して正しい結果が返されます。つまり、文字がサイレントにドロップさ\rれる前の文字が返されます。\n

ファイル内のバイトを完全に制御する必要がある場合は、バイナリモードを使用できます。その場合、すべてのバイトは正確に1バイトに対応し、Pythonは変換を実行しません。

>>> # Write a file with different line endings, using binary mode for full control
>>> with open('/tmp/demo.txt', 'wb') as wf:
...     wf.write(b'DOS line\r\n')
...     wf.write(b'U*x line\n')
...     wf.write(b'no line')
10
9
7

>>> # Read the file as text
>>> with open('/tmp/demo.txt', 'r') as text:
...     for line in text:
...         print(line, end='')
DOS line
U*x line
no line

>>> # Or more demonstrably
>>> with open('/tmp/demo.txt', 'r') as text:
...     for line in text:
...         print(repr(line))
'DOS line\n'
'U*x line\n'
'no line'

>>> # Back to bytes!
>>> with open('/tmp/demo.txt', 'rb') as binary:
...     for line in binary:
...         print(line)
b'DOS line\r\n'
b'U*x line\n'
b'no line'

>>> # Open in binary, but convert back to text
>>> with open('/tmp/demo.txt', 'rb') as binary:
...     for line in binary:
...         print(line.decode('utf-8'), end='')
DOS line
U*x line
no line

>>> # Or again in more detail, with repr()
>>> with open('/tmp/demo.txt', 'rb') as binary:
...     for line in binary:
...         print(repr(line.decode('utf-8')))
'DOS line\r\n'
'U*x line\n'
'no line'
于 2021-03-23T05:45:11.987 に答える
1

\n文字列の行を区切ります。次の例では、レコードをループで書き込み続けています。各レコードは。で区切られ\nます。

f = open("jsonFile.txt", "w")

for row_index in range(2, sheet.nrows):

  mydict1 = {
    "PowerMeterId" : row_index + 1,
    "Service": "Electricity",
    "Building": "JTC FoodHub",
    "Floor": str(Floor),
    "Location": Location,
    "ReportType": "Electricity",
    "System": System,
    "SubSystem": "",
    "Incomer": "",
    "Category": "",
    "DisplayName": DisplayName,
    "Description": Description,
    "Tag": tag,
    "IsActive": 1,
    "DataProviderType": int(0),
    "DataTable": ""
  }
  mydict1.pop("_id", None)
  f.write(str(mydict1) + '\n')

f.close()
于 2019-10-16T09:45:44.377 に答える
1
"{}\n{}\n{}".format(
    "line1",
    "line2",
    "line3"
)

個人的にこのフォーマットを好む

于 2021-11-16T17:36:31.203 に答える