왜 파이썬 readlines ()가 추가로 ' \ n ' 텍스트 파일에서 읽을 때 줄 사이에?


정답

멍청 하니까. 이 기능 의 유용한 응용 프로그램을 생각할 수 없으며 열심히 노력했습니다.

(에 대한 Romain의 답변 참조 “정확히 왜”에 대한 진지한 접근, 난 그냥 불꽃이 필요합니다 🙂 몇 가지 해결 방법을 제공 할 수 있지만)

왜 하나 이상의 매개 변수를 허용하지 않는가 (즉, “종료”, 기본값 “\ n”또는 bool 플래그, keepnl = True)로 변경하여 줄 끝을 유지 / 변경하도록 선택할 수 있습니다. 필요한 경우에만 내 이해를 넘어 설 수 있습니다.

이것은 직관적이지 않은 정책 결정은 실제로 사용할 수 없게 만들고 이해하기 어렵고 느리게 만드는 대신 :

lines = [ ln[:-1] for ln in f.readlines() ]

보통 선호합니다

lines = f.read().split("\n")

훨씬 더 간단합니다. 지금 변경하기에는 너무 늦었 나봐요.

예, OS에 따라 다른 줄 끝이있을 가능성이 있습니다.

파이썬 표준 라이브러리에도 결함이있는 것 같습니다. ,

답변

이러한 문자는 아니요 입니다. 추가. 텍스트 파일에 있습니다. 줄 끝을 표시합니다.

다음은 sample.txt라는 텍스트 파일을 읽는 또 다른 방법입니다.

>>> with open("sample.txt") as sample:

... contents = sample.readlines()

... print(contents)

...

["This is line number 1\n", "This is line number 2\n", "This is line number 3\n", "This is line number 4\n", "This is line number 5\n", "This is line number 6\n", "This is line number 7\n", "This is line number 8\n", "This is line number 9\n", "This is line number 10\n", "This is line number 11\n", "This is line number 12\n", "This is line number 13\n", "This is line number 14\n", "This is line number 15\n", "This is line number 16\n", "This is line number 17\n", "This is line number 18\n", "This is line number 19\n", "This is line number 20\n"]

  • 인쇄 된 각 줄 출력은 텍스트 파일의 줄에 있으므로 \n로 끝납니다.
  • with 이 구조는 사용 후 파일을 닫도록 배열하기 때문에 파일을 열 때.
  • 파일을 file라고 부르는 것을 확인했습니다. Python 언어의 일부인 이름은 사용하지 않아야합니다.

줄 바꿈을 제거하는 코드를 원한다면 다음 옵션 중 하나가 있습니다.

>>> with open("sample.txt") as sample:

... for line in sample:

... print(line.rstrip())

...

This is line number 1

This is line number 2

This is line number 3

This is line number 4

This is line number 5

This is line number 6

This is line number 7

This is line number 8

This is line number 9

This is line number 10

This is line number 11

This is line number 12

This is line number 13

This is line number 14

This is line number 15

This is line number 16

This is line number 17

This is line number 18

This is line number 19

This is line number 20

참고 t hat 나는 문자열의 오른쪽 끝에서만 공백 문자를 제거하는 rstrip를 사용했습니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다