2011-03-08 4 views
1

텍스트 파일에 행렬을 저장했습니다 :어떻게 파이썬을 사용하여 텍스트 파일에서 integer (x, y)를 검색합니까?

(i, j)  count 

쌍 (i, j)을 검색해야합니다. 어떻게해야합니까?

with open("matrix.txt","r") as searchmat:    
     for line in searchmat: 
       word=str((x,y)) 
       if word in line: 
      t=line.split('\t') 
      f=t[1] 
       return f 

모든 값에 대해 NONE이 표시됩니다.

+0

* 모든 * 값에 대해 NONE이 표시됩니까? 어떤 * 가치 *에 대해 이야기하고 있습니까? * one * 값만 반환됩니다. – phimuemue

+0

"x"와 "y"의 모든 값을 얻지 못합니다. – Apps

+0

@Shawn : 들여 쓰기가 여기에있는 문제라고 생각합니다. –

답변

0

들여 쓰기가 엉망인 것처럼 보입니다. 여기에 붙여 넣은 코드를 보면서 파이썬이 가장 좋아하지 않는 탭과 공백이 섞여있는 것처럼 보입니다. 파일의 모든 탭을 공백으로 바꾸고 다음과 같이 코드를 들여 쓰기하십시오.

with open("matrix.txt","r") as searchmat:    
    for line in searchmat: 
     word=str((x,y)) 
     if word in line: 
      t=line.split('\t') 
      f=t[1] 
      return f 
1

코드가 잘 들립니다 (들여 쓰기가 올바르다 고 가정). 데이터 파일 형식에 문제가있을 수 있습니다. 아마도 구분 기호에서 하나 이상의 탭 문자? 대신 t=line.split()을 사용해보세요.

0

이 도움이 될 수 있습니다 :

def reader(path): 
    import re 
    pattern = re.compile("^\((\d*), (\d*)\).*$") 
    with open(path) as searchmat: 
     for line in searchmat: 
      print re.match(pattern, line).group(1, 2) # print both raw groups 
      print int(re.match(pattern, line).group(1)) # first number as int 
      print int(re.match(pattern, line).group(2)) # second number as int 

그것은 path에 의해 주어진 파일을 통과하고 설명하는 패턴의 각 라인에서 찾습니다.

관련 문제