source

파일에 여러 행을 쓰려면 문자열에 새 행을 지정하려면 어떻게 해야 합니까?

lovecheck 2023. 1. 22. 22:34
반응형

파일에 여러 행을 쓰려면 문자열에 새 행을 지정하려면 어떻게 해야 합니까?

텍스트 파일에 여러 줄을 쓸 수 있도록 Python 문자열에 새 줄을 표시하는 방법은 무엇입니까?

당신이 얼마나 정확해지길 원하는지에 달렸어요. \n보통 그 일을 할 것이다.올바르게 하려면 , 패키지의 줄바꿈 문자를 참조해 주세요.(실제로는linesep

API를 쓸는 ": Python API"를 .os.linesep. 그냥 사용하세요.\n; 은 그것을 Python은 그것을 플랫폼에 적합한 줄바꿈 문자로 자동 변환합니다.

는 「」입니다.\n 문자열 안에서 사용됩니다.

예를 들어:

    print('First line \n Second line') 

서 ''는\n을 사용하다

이렇게 하면 다음과 같은 결과가 나옵니다.

First line
 Second line

Python 2 를 사용하는 경우는, 인쇄 기능에 괄호를 사용하지 않습니다.

새 행은 개별적으로 쓸 수도 있고 단일 문자열 내에서 쓸 수도 있습니다.

예 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

플랫폼에 의존하지 않는 라인 브레이커: Linux, Windows 및 iOS

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

출력:

physical
distancing

여기에서는 최상위 들여쓰기(예를 들어 함수 정의)가 아니더라도 올바르게 작동하는 읽기 쉬운 솔루션이 있습니다.

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.
"""))

가장 심플한 솔루션

" " " 을 print인수를 지정하지 않으면 공백 행이 출력됩니다.

print

출력을 다음과 같은 파일로 파이핑할 수 있습니다(예시를 참고).

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

의존하지 만 아니라 (),os를 넣는 수 .\n끈 안에

설명.

print()옵션 가 있습니다.이 는 function " " " " 입니다.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()

Python은 Python이라고 합니다.\n

다른 답변에서도 언급되었듯이 "새로운 행은 \n입니다.n입니다.문자열 안에서 사용됩니다."

가장 간단하고 읽기 쉬운 방법은 "format" 함수를 사용하여 nl을 새 줄의 이름으로 사용하고 인쇄하려는 문자열을 인쇄하는 것과 동일한 형식으로 구분하는 것입니다.

Python 2:

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

Python 3:

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

출력:

line1
line2
line3

이렇게 하면 작업이 수행되고 코드의 가독성도 높아집니다.

같은 방법으로'\n'아마 필요없을 겁니다.'\r'자바 버전에 있는 이유가 있나요?만약 당신이 그것을 필요로 하거나 원한다면 Python에서도 똑같이 사용할 수 있습니다.

인터랙티브 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!

Java에서 문자열 리터럴로 사용되는 대부분의 이스케이프 문자는 "\r" 및 "\n"과 같은 Python에서도 유효합니다.

\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....."

출력:

In [37]: print(test_line)

Hi!!!
 testing first line..
 testing second line..
 and third line.....

Python 3에서는 이 언어가 플랫폼의 네이티브 표현에서 새로운 행 인코딩을 처리합니다.즉,\r\n윈도 상에서\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'

용도:

"{}\n{}\n{}".format(
    "line1",
    "line2",
    "line3"
)

저는 개인적으로 이 형식을 선호합니다.

\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()

다양한 동등한 방법

사용.print

print는 이미 새로운 행을 기본적으로 추가하고 있습니다.

with open("out.txt", "w") as f:
    print("First", file=f)
    print("Second", file=f)

동등:

with open("out.txt", "w") as f:
    print("First\nSecond", file=f)

로.print 줄을 자동으로 추가하지 않고 사용sep=""(이후로)sep="\n"는 디폴트입니다).

with open("out.txt", "w") as f:
    print("First\nSecond\n", sep="", file=f)

사용.f.write

텍스트 모드로 열린 파일의 경우:

with open("out.txt", "w") as f:
    f.write("First\nSecond\n")

바이너리 모드로 열려 있는 파일의 경우, 파일은, 다음의 자동 번역 없이 써집니다.\n플랫폼 고유의 회선 터미네이터에 접속합니다.현재 플랫폼에 대해 줄바꿈 문자를 사용하려면\n:

with open("out.txt", "wb") as f:
    f.write("First" + os.linesep)
    f.write("Second" + os.linesep)

출력 파일

시각:

First
Second

에서는, 은 Linux 로 됩니다.\n:

First\nSecond\n

에서는, 은 Windows 로 됩니다.\r\n:

First\r\nSecond\r\n

「」의 변환을 .\n로로 합니다.\r\n텍스트 모드로 열린 파일의 경우 를 사용하여 파일을 엽니다.

언급URL : https://stackoverflow.com/questions/11497376/how-do-i-specify-new-lines-in-a-string-in-order-to-write-multiple-lines-to-a-fil

반응형