2017-12-20 1 views
0

특정 구분 기호 ("##")에 대한 로그 파일을 구문 분석하려고합니다. 파싱되면 각 줄의 내용을 얻습니다. 그런 다음 각 줄에서 찾고있는 문자열을 제공하는 .split ("")을 사용하여 줄을 나눕니다. 각 줄을 하나씩 목록에 넣고 싶습니다. 아래는 지금 코딩 된 방법입니다.구문 분석 된 파일의 내용을 목록으로 만들기

LNsearch = "##" 
old = open(file) 
with old as f 
    for line in f: 
     if LNsearch in line: 
      LNfinder = line.split(" ")[1].replace('\n','') 
      print(LNfinder) 

results: 

str1 
str2 
str3 
str4 
... 

내가 얻을 찾고 있어요 [ 'str1이', 'STR2', 'STR3', 'STR4'을 '...']

감사합니다,

+0

당신은'L = []'다음 루프 안에 당신이 당신의 결과'l.append (LNfinder)를 추가 할 루프 외부 목록을 초기화 할 것' –

+0

감사합니다 빠른 응답을 위해. 내 데이터로 피라미드를 얻고 있습니다. 나는 for 루프 때문이라고 생각한다. str1이 목록에 오면 str2가 추가됩니다. 이 문제를 해결할 수있는 방법이 있습니까? – user9121131

답변

0

아이디어를 바탕으로 그 Patrick Haugh는이 논평에서 언급했다.

## str1 
## str2 X 

## str3 X 
## str4 X 

코드는 아래 열리고있는 test.txt을 읽어

나는의 내용에있는 test.txt라는 파일을 사용했다. for 루프는 각 행을 구문 분석하고 행에서 "##"및 ""을 검색합니다. 발견되면 인덱스 1의 분할 항목을 \ n 제거한 상태에서 lst라는 목록에 추가합니다. lst라는 목록이 마지막에 마지막으로 인쇄됩니다.

# Test file to read. 
file = 'test.txt' 

LNsearch = "##" 

with open(file) as f: 
    # Prepare list to collect wanted strings. 
    lst = [] 

    for line in f: 

     # Require "##" in line and " " in line to be valid. 
     if LNsearch in line and " " in line: 

      # Get 2nd substring and ensure no \n. 
      LNfinder = line.split(" ")[1].replace('\n','') 

      # This appends to the list named lst. 
      lst.append(LNfinder) 

    # Print final list. 
    print('lst:', lst) 

출력은 다음과 같습니다

lst: ['str1', 'str2', 'str3', 'str4'] 
+0

자세한 설명 주셔서 감사합니다. 내가 누락 된 부분에 정말 도움이되었습니다. – user9121131

관련 문제