백엔드 개발 파이썬 튜토리얼 python3.4.3에서 txt 텍스트를 한 줄씩 읽고 중복을 제거하는 방법

python3.4.3에서 txt 텍스트를 한 줄씩 읽고 중복을 제거하는 방법

May 02, 2018 pm 04:17 PM
텍스트

이 글은 python3.4.3에서 txt 텍스트를 한 줄씩 읽고 중복을 제거하는 방법을 주로 소개합니다. 이제 특정 참조 값이 있어 도움이 필요한 친구들이 참고할 수 있습니다. 주의해야 할 파일 쓰기 문제는 다음과 같습니다:

1. 문자 인코딩 2. 작업이 완료되는 즉시 파일 설명자를 닫습니다.

3. 코드 호환성

여러 가지 방법:

#!/bin/python3
original_list1=[" "]
original_list2=[" "]
original_list3=[" "]
original_list4=[" "]
newlist1=[" "]
newlist2=[" "]
newlist3=[" "]
newlist4=[" "]
newtxt1=""
newtxt2=""
newtxt3=""
newtxt4=""
#first way to readline
f = open("duplicate_txt.txt","r+")    # 返回一个文件对象  
line = f.readline()           # 调用文件的 readline()方法 
while line:  
  original_list1.append(line)          
  line = f.readline()  
f.close() 
#use "set()" remove duplicate str in the list
# in this way,list will sort randomly
newlist1 = list(set(original_list1))
#newlist1 = {}.fromkeys(original_list1).keys() #faster 
#rebuild a new txt 
newtxt1="".join(newlist1)
f1 = open("noduplicate1.txt","w")
f1.write(newtxt1)
f1.close()
###################################################################
#second way to readline
for line in open("duplicate_txt.txt","r+"):  
  original_list2.append(line)
newlist2 = list(set(original_list2))
newlist2.sort(key=original_list2.index)         #sort
#newlist2 = sorted(set(original_list2),key=l1.index)  #other way
newtxt2="".join(newlist2)
f2 = open("noduplicate2.txt","w")
f2.write(newtxt2)
f2.close()
###################################################################
#third way to readline
f3 = open("duplicate_txt.txt","r")  
original_list3 = f3.readlines()       #读取全部内容 ,并以列表方式返回 
for i in original_list3:          #遍历去重
  if not i in newlist3:
      newlist3.append(i)
newtxt3="".join(newlist3)
f4 = open("noduplicate3.txt","w")
f4.write(newtxt3)
f4.close()
###################################################################
#fourth way
f5 = open('duplicate_txt.txt',"r+") 
try: 
  original_list4 = f5.readlines() 
  [newlist4.append(i) for i in original_list4 if not i in newlist4]
  newtxt4="".join(newlist4)
  f6 = open("noduplicate4.txt","w")
  f6.write(newtxt4)
  f6.close()
finally: 
  f5.close()
로그인 후 복사

결과:

중복 제거 전:

중복 제거 후(순서 없음):

중복 제거 후(순서대로):

Summary

아래 프로그램에는 파일 읽기 및 쓰기 작업과 연결 목록 작업이 포함되어 있습니다. 기사 시작 부분에 언급된 몇 가지 문제는 중국어가 아니므로 인코딩에 대해서는 신경 쓰지 않습니다. 여기에 언급하고 싶습니다:

f = open("test.txt","w")
f.write(u"你好")
로그인 후 복사

위 코드가 python2에서 실행되면 오류가 보고됩니다

프로그램이 유니코드 문자열을 직접 저장할 수 없기 때문에 오류가 보고됩니다. 인코딩해야 합니다. 저장하기 전에 str 유형의 이진 바이트 시퀀스로 변환됩니다.

write() 메서드는 기본적으로 ascii 인코딩 형식을 사용하여 자동으로 인코딩을 변환하는데, ascii는 중국어를 처리할 수 없으므로 UnicodeEncodeError가 발생합니다.

올바른 방법은 write() 메서드를 호출하기 전에 형식을 수동으로 변환하고 utf-8 또는 gbk를 사용하여 str로 변환하는 것입니다.

f = open("test.txt","w")
text=u"你好"
text=text.encode(encoding='utf-8')
f.write(text)
로그인 후 복사

close() 정보:

닫지 않으면 어떤 영향을 미치나요? 작업이 완료된 후 파일을 닫지 않으면 시스템에서 열 수 있는 파일 설명자 수가 제한되어 있으므로 시스템 리소스가 낭비됩니다. 리눅스는 65535입니다.

일반적으로 닫으면 괜찮지만 특별한 상황이 있을 수 있습니다. 예를 들어 open() 함수를 호출할 때 오류가 발생했고, close()를 호출하면 확실히 오류가 보고됩니다. 또 다른 방법은 write() 중에 디스크 공간이 부족하면 오류가 보고되고 close()가 실행될 기회가 없다는 것입니다. 올바른 방법은 예외를 잡기 위해 try Except를 사용하는 것입니다.

f = open("test.txt","w")
try:
  text=u"你好"
  text=text.encode(encoding='utf-8')
  f.write(text)
except: IOError as e:
  print("oops,%s"%e.args[0])
finally:
  f.close()
로그인 후 복사

보다 우아한 작성 방법은 with...as를 사용하는 것입니다.

with open("test.txt","w") as f:
  text=u"你好"
  f.write(text.encode(encoding='utf-8'))
로그인 후 복사

파일 개체는 오전 및 오후 관리자 프로토콜을 구현합니다. 프로그램이 with 문을 입력하면 파일 개체가 변수 f에 할당되고 프로그램이 실행될 때 close() 메서드가 자동으로 호출됩니다. 로 종료됩니다.

호환성 문제 정보:

python2와 python3의 open() 함수는 서로 다릅니다. 후자는 함수에서 문자 인코딩 형식을 지정할 수 있습니다.

python2와 python3 간의 호환성 open() 문제를 해결하는 방법은 무엇입니까?

io 모듈에서 open() 함수를 사용하세요. python2의 io.open은 python3의 open 함수와 동일합니다. _python

위 내용은 python3.4.3에서 txt 텍스트를 한 줄씩 읽고 중복을 제거하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Chrome 및 Edge의 모든 탭에서 텍스트를 검색하는 방법 Chrome 및 Edge의 모든 탭에서 텍스트를 검색하는 방법 Feb 19, 2024 am 11:30 AM

Chrome 및 Edge의 모든 탭에서 텍스트를 검색하는 방법

대형 모델을 사용하여 텍스트 요약 교육을 위한 새로운 패러다임 만들기 대형 모델을 사용하여 텍스트 요약 교육을 위한 새로운 패러다임 만들기 Jun 10, 2023 am 09:43 AM

대형 모델을 사용하여 텍스트 요약 교육을 위한 새로운 패러다임 만들기

새로운 벨소리 및 문자음 사용해 보기: iOS 17의 iPhone에서 최신 소리 알림을 경험해 보세요 새로운 벨소리 및 문자음 사용해 보기: iOS 17의 iPhone에서 최신 소리 알림을 경험해 보세요 Oct 12, 2023 pm 11:41 PM

새로운 벨소리 및 문자음 사용해 보기: iOS 17의 iPhone에서 최신 소리 알림을 경험해 보세요

한 달 동안 온라인 채팅을 한 끝에 돼지 죽이는 사기꾼은 실제로 AI에게 패배했습니다! 200만 네티즌, 충격에 소리쳤다 한 달 동안 온라인 채팅을 한 끝에 돼지 죽이는 사기꾼은 실제로 AI에게 패배했습니다! 200만 네티즌, 충격에 소리쳤다 Apr 12, 2023 am 09:40 AM

한 달 동안 온라인 채팅을 한 끝에 돼지 죽이는 사기꾼은 실제로 AI에게 패배했습니다! 200만 네티즌, 충격에 소리쳤다

Windows 11에서 스크린샷의 텍스트를 복사하는 방법 Windows 11에서 스크린샷의 텍스트를 복사하는 방법 Sep 20, 2023 pm 05:57 PM

Windows 11에서 스크린샷의 텍스트를 복사하는 방법

win7 시스템에서 txt 텍스트를 열 수 없는 경우 수행할 작업 win7 시스템에서 txt 텍스트를 열 수 없는 경우 수행할 작업 Jul 06, 2023 pm 04:45 PM

win7 시스템에서 txt 텍스트를 열 수 없는 경우 수행할 작업

win11 텍스트 문서를 여는 방법 알아보기 win11 텍스트 문서를 여는 방법 알아보기 Jan 02, 2024 pm 03:54 PM

win11 텍스트 문서를 여는 방법 알아보기

iOS 17.2: iPhone에서 인라인 예측 텍스트를 비활성화하는 방법 iOS 17.2: iPhone에서 인라인 예측 텍스트를 비활성화하는 방법 Dec 15, 2023 am 09:43 AM

iOS 17.2: iPhone에서 인라인 예측 텍스트를 비활성화하는 방법

See all articles