두 개의 열로 구성된 파일이 있습니다.
1 a
2 b
3 c
열 1이 키이고 열 2가 값이되도록이 파일을 사전에 읽어보고 싶습니다. 즉,
d = {1:'a', 2:'b', 3:'c'}
파일이 작기 때문에 효율성은 문제가되지 않습니다.
두 개의 열로 구성된 파일이 있습니다.
1 a
2 b
3 c
열 1이 키이고 열 2가 값이되도록이 파일을 사전에 읽어보고 싶습니다. 즉,
d = {1:'a', 2:'b', 3:'c'}
파일이 작기 때문에 효율성은 문제가되지 않습니다.
답변:
d = {}
with open("file.txt") as f:
for line in f:
(key, val) = line.split()
d[int(key)] = val
with
여기에서 파일 정리를 처리하는 데 사용됩니다. 블록을 벗어나면 (정상적인 실행 흐름이나 예외에 의해) 파일이 자동으로 닫힙니다. Python의 컨텍스트 관리자에 대한 자세한 내용은 여기에서 읽을 수 있습니다. effbot.org/zone/python-with-statement.htm
for line in open("file.txt"):
같은 방식으로 정리하십시오. 그리고 f가 로컬 값 f
이면 스코프가 손실되면 해제됩니다. 이 명령문이 유용한 유일한 경우는 긴 함수 (품질에 좋지 않음) 또는 전역 변수를 사용하는 경우입니다.
for line in open('file.txt')
하지 않습니다 . 모든 Python 구현이 동일하지는 않습니다. with
블록이 종료 될 때 파일이 닫히도록 보장합니다. 때 for
라인이 완료되면 close
수있다 라고. CPython
하지만 같은 버전 IronPython
에는 게으른 가비지 수집기가 있습니다.
그러면 키가 문자열로 남습니다.
with open('infile.txt') as f:
d = dict(x.rstrip().split(None, 1) for x in f)
dict([line.split() for line in f])
하면 충분합니다.
dict([x.rstrip().split(None, 1) for x in f])
대신 dict(x.rstrip().split(None, 1) for x in f)
. 같은 것을 생각하는 사람들을 위해 전자는 여기에 설명 된대로 목록 이해력 대신 생성기 표현식입니다. python.org/dev/peps/pep-0289(PEP-289) . 새로운 것을 배웠습니다!
def get_pair(line):
key, sep, value = line.strip().partition(" ")
return int(key), value
with open("file.txt") as fd:
d = dict(get_pair(line) for line in fd)
partition
? 그리고 with
진술?
partition
더 빠르고 정확하게이 목적을 위해 만들어졌습니다.
with
확인하는 간단한 방법입니다.
strip
하다고 말할 것입니다.
사전 이해로
d = { line.split()[0] : line.split()[1] for line in open("file.txt") }
또는 판다
import pandas as pd
d = pd.read_csv("file.txt", delimiter=" ", header = None).to_dict()[0]
import re
my_file = open('file.txt','r')
d = {}
for i in my_file:
g = re.search(r'(\d+)\s+(.*)', i) # glob line containing an int and a string
d[int(g.group(1))] = g.group(2)
re
? 진지하게?
split()
파일 형식이 정상이 아닌 경우 거의 조용히 작동하지 않습니다.
다른 옵션이 있습니다 ...
events = {}
for line in csv.reader(open(os.path.join(path, 'events.txt'), "rb")):
if line[0][0] == "#":
continue
events[line[0]] = line[1] if len(line) == 2 else line[1:]
텍스트 파일에서 값을 가져와 키 값 쌍으로 사용해야한다는 요구 사항이있었습니다. 텍스트 파일에 키 = 값으로 내용이 있으므로 구분 기호가있는 분할 방법을 "="로 사용하고 코드 아래에 썼습니다.
d = {}
file = open("filename.txt")
for x in file:
f = x.split("=")
d.update({f[0].strip(): f[1].strip()})
strip 메소드를 사용하면 "="구분 기호 앞뒤의 공백이 제거되고 예상 데이터가 사전 형식으로 표시됩니다.
=
질문에 답하기 위해을``로 바꾸도록 편집 할 수 있습니까?