2017-09-18 1 views
-2

내가 .txt 파일이 텍스트의 많은의로드하지만 2 ~ 3 사이의 단락에서 사전과 같은 텍스트가 : 그래서 읽을 전체 파일을 모든 'key2'을 잡아 원하는행이 사전 유형인지 확인하고 데이터를 인쇄 하시겠습니까?

somerandomtextinthisline 
{"key1":"value1","key2":"value2"} 
somerandomtextinthislineblasd 
asbdjalsdnlasd 
dasdjasdkjn 
<space> 

{"key1":"value1","key2":"value2"} 
someranomtextaganinasdlasd 
asdasd 

파일에서 붙여 넣은 다음 result.txt이라는 파일에 붙여 넣으십시오.

어떻게 코딩 할 수 있습니까?

+0

이것은 가족 사이트입니다. 언어 조심해, 제발? – larsks

+0

'json.loads'로 모든 라인의 디코드를 시도해 볼 수있는 것처럼 보입니다. 만약 그것이 작동하고 결과가 사전이라면 당신은 황금합니다. – larsks

+0

이것은 투옥 사이트가 아닌 가족 사이트입니다. –

답변

2

사용 ast.literal_eval 사전으로 변환 (가능한 경우) 및 분석 선이 'key2' 사용하여 색인 할 수 있는지 확인하기 :

import ast 

with open(filename) as fin: 
    for line in fin: 
     try: 
      parsed = ast.literal_eval(line) 
      key2 = parsed['key2'] 
     except Exception: 
      continue 
     print(key2) # I just print it here, you probably need to write it to another file instead 
0

당신은 파일에서 사전 일치하는 정규 표현식을 사용할 수 있습니다

import re 
import ast 
data = [i.strip('\n') for i in open('filename.txt')] 
final_dicts = list(map(ast.literal_eval, [re.sub("\s+", '', i) for i in data if re.findall('\{.*?:.*?,*\}', re.sub("\s+", '', i))])) 
관련 문제