programing

.readlines() 사용 시 \n 삭제

bestcode 2022. 11. 6. 10:35
반응형

.readlines() 사용 시 \n 삭제

값이 포함된 .txt 파일이 있습니다.

값은 다음과 같습니다.

Value1
Value2
Value3
Value4

제 목표는 그 값을 리스트에 넣는 것입니다.이렇게 하면 목록은 다음과 같습니다.

['Value1\n', 'Value2\n', ...]

\n는 불필요합니다.

코드는 다음과 같습니다.

t = open('filename.txt')
contents = t.readlines()

이 조작은 원하는 것을 실행할 수 있습니다(목록의 파일 내용, 행별, \n 없음).

with open(filename) as f:
    mylist = f.read().splitlines() 

난 이렇게 할 거야:

alist = [line.rstrip() for line in open('filename.txt')]

또는 다음과 같이 입력합니다.

with open('filename.txt') as f:
    alist = [line.rstrip() for line in f]

사용하여 문자열 끝에서 줄바꿈만 삭제할 수 있습니다.

for i in contents:
    alist.append(i.rstrip('\n'))

그러면 다른 모든 공백은 그대로 유지됩니다.행의 시작과 끝의 공백에 신경을 쓰지 않는다면, 큰 해머는 라고 불립니다.

단, 파일에서 읽고 모든 것을 메모리로 가져오므로 메서드사용하는 것이 좋습니다.이것에 의해, 행 구분 기호로 1 개의 문자열이 분할되어 그러한 구분 기호 없이 행의 리스트가 반환됩니다.이것에 의해, 다음의 순서로 사용합니다.file.read()결과 및 사용 안 함file.readlines()전혀:

alist = t.read().splitlines()

파일을 연 후 목록 이해는 이를 한 줄로 수행할 수 있습니다.

fh=open('filename')
newlist = [line.rstrip() for line in fh.readlines()]
fh.close()

나중에 파일을 닫는 것만 잊지 마세요.

스플릿 라인이 4 gb 파일에 메모리 에러를 일으키고 있기 때문에 줄 바꿈 기능을 사용하여 줄 바꿈 문자를 제거했습니다.

샘플 코드:

with open('C:\\aapl.csv','r') as apple:
    for apps in apple.readlines():
        print(apps.strip())

목록의 각 문자열에 대해.strip()문자열의 선두 또는 끝에서 공백을 제거합니다.

for i in contents:
    alist.append(i.strip())

그러나 사용 사례에 따라 다음과 같은 기능을 사용하는 것이 더 나을 수 있습니다.numpy.loadtxt또는 심지어numpy.genfromtxt파일에서 읽고 있는 데이터의 배열이 필요한 경우.

from string import rstrip

with open('bvc.txt') as f:
    alist = map(rstrip, f)

주의사항:rstrip()는 공백 공간을 삭제합니다.즉, 다음과 같습니다.\f,\n,\r,\t,\v,\x공백,
중요한 캐릭터만 대사에 남겨두고 싶으신가 봐요.그럼 그냥map(strip, f)머리글의 공백도 없애면 더 잘 맞을 거예요.


NL만을 배제하고 싶은 경우\n및 RF\r기호, 수행:

with open('bvc.txt') as f:
    alist = f.read().splitlines()

인수 전달이 없는 splitlines()는 NL 및 RF 기호를 유지하지 않습니다(Windows는 줄의 끝에 NLRF를 사용하여 파일을 기록합니다).다른 공백, 특히 탭은 유지합니다.

.

with open('bvc.txt') as f:
    alist = f.read().splitlines(True)

와 같은 효과가 있다

with open('bvc.txt') as f:
    alist = f.readlines()

즉, NL과 RF가 유지되는 것입니다.

저도 같은 문제가 있었고, 다음과 같은 해결책이 매우 효율적이라는 것을 알았습니다.나는 그것이 너나 같은 일을 하고 싶은 모든 사람들에게 도움이 되기를 바란다.

먼저 파일의 적절한 열기/닫기를 보장하므로 "with" 문장으로 시작하겠습니다.

다음과 같이 표시됩니다.

with open("filename.txt", "r+") as f:
    contents = [x.strip() for x in f.readlines()]

이러한 문자열(내용 목록의 모든 항목이 문자열)을 정수 또는 부동으로 변환하려면 다음을 수행할 수 있습니다.

contents = [float(contents[i]) for i in range(len(contents))]

intfloat정수로 변환할 경우.

SO에서의 첫 회답이므로 형식이 올바르지 않다면 죄송합니다.

최근에 파일에서 모든 행을 읽기 위해 이것을 사용했습니다.

alist = open('maze.txt').read().split()

또는 안전성을 높이기 위해 이 기능을 사용할 수도 있습니다.

with f as open('maze.txt'):
    alist = f.read().split()

한 줄의 텍스트 사이에 공백이 있으면 작동하지 않지만 예제 파일에는 값을 분할하는 공백이 없을 수 있습니다.은 단순한 하며 빈.''파일 끝에 있는 줄바꿈과 같은 빈 줄마다 사용할 수 있습니다.

with open('D:\\file.txt', 'r') as f1:
    lines = f1.readlines()
lines = [s[:-1] for s in lines]

쓰는 예요.file.readline()[0:-1]마지막 줄인 줄바꿈을 제외한 모든 것을 읽습니다.

언급URL : https://stackoverflow.com/questions/15233340/getting-rid-of-n-when-using-readlines

반응형