2017-11-02 3 views
-1

txt 파일에 수백만 줄의 파일 형식이 있습니다. 당신이 볼 경우파이썬에서 공백으로 구분 된 값으로 파일을 한 줄씩 읽는 방법

Key: 12122.AA.K 
Value: IRIR-93I3KD-OEPE-IE,3833,343343,09/12/2093,,N,EC,3838-38939-393 

키와 값으로 구분이다 :

파이썬에서
12122.AA.K IRIR-93I3KD-OEPE-IE,6373,893939,09/12/2093,,N,EC,3838-38939-393 
12123.AA.K KKKS-93I3KD-OEPE-IE,9393,039033,09/12/2093,,N,EC,3838-38939-393 
12122.AA.K PEOEP-93I3KD-OEPE-IE,9033,930392,09/12/2093,,N,EC,3838-38939-393 
12124.AA.K MDJDK-93I3KD-OEPE-IE,3930,272882,09/12/2093,,N,EC,3838-38939-393 
12125.AA.K EOEPE-93I3KD-OEPE-IE,8393,039393,09/12/2093,,N,EC,3838-38939-393 

, 나는 다음과 같은 라인 - 각각의 키와 값이 분할 할 : 내 파일 형식은 무엇인가 다음과 같다 하나의 빈 공간 만.

파이썬으로 들어가는 효율적인 방법은 무엇입니까?

+0

을 시도 할 수 사전에 도움을 주셔서 감사합니다? –

+0

[split] 메소드 (https://docs.python.org/3.6/library/stdtypes.html#str.split)를 사용해보세요. 기본적으로 공백 문자는 –

+0

AFAICT의 문자열을 나눕니다. 입력 한 모든 줄에 동일한 키 값 쌍이 있습니다. 중복 키를 어떻게 처리 할 계획입니까? – ShadowRanger

답변

0
with open('file.txt','r') as file: 
    thedict={e.split(' ')[0]:e.split(' ')[1] for e in file} 

당신은 당신이 지금까지 시도 및 이유 작업이 아닌 것을이 사전 이해

+0

@schwobaseggl 더 좋은 방법이 있나요? –

+0

나는 수백만 가지의 아이템으로 벌거 벗어요. 초기 읽기 및 분할은 이상적이지 않았습니다. 이제는 더 좋아집니다. 두 번 나누기를해도 여전히 불필요하다고 느낍니다. 그것을 피하는 다른 대답을보십시오. – schwobaseggl

1
with open(filename) as f: 
    mapping = dict(line.split(' ', 1) for line in f) 
+0

참고 : 행에 공백 문자가 없으면 오류가 발생합니다. 키 (행의 내용)를 빈 문자열과 쌍으로 연결하여 이러한 행을 처리하려는 경우 다음을 수행 할 수 있습니다.'dict (f.의 행에 대해 line.partition ('') [:: 2])'. 'partition'은 항상 정확히 3 개의 값을 반환하므로 짝수 인덱스 값을 취하면 항상 정확히 2 개가됩니다. 중간 값은 찾으면 파티션 문자이며 여기서는 상관하지 않습니다. – ShadowRanger

관련 문제