파일에 여러 행을 쓰려면 문자열에 새 행을 지정하려면 어떻게 해야 합니까?
텍스트 파일에 여러 줄을 쓸 수 있도록 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
'source' 카테고리의 다른 글
jQuery를 사용하여 키 누르기 이벤트를 트리거하는 결정적인 방법 (0) | 2023.01.22 |
---|---|
Larabel에서 특수 문자를 사용하는 필터에 SQL REGEXP(mariadb)를 사용합니다. (0) | 2023.01.22 |
mysql은 내부 또는 외부 명령어, 프로그램 또는 배치로 인식되지 않습니다. (0) | 2023.01.22 |
boto3를 사용하여 버킷 내용 나열 (0) | 2023.01.22 |
SimpleXML 개체를 배열로 변환하는 방법 (0) | 2023.01.22 |