2013-10-05 4 views
0

pygame으로 행을 그릴 xyz 좌표를 저장하는 목록을 읽은 파일이 있습니다.python의 목록에서 문자를 제거합니다. pygame

이 파일의 형식은 다음과 같습니다

-2000 -2000 -2000 # THE FRAME, origin point, 1 
-2000 379 -2000 # 2 
2000 379 -2000 # 3 
2000 -2000 -2000 # 4 
-2000 -2000 -2000 # 1 
j 
2000 379 -1190 # 7 
2000 -2000 -1190 # 8 
-2000 -2000 -1190 # 5 

난 그냥 내가 필요하지 않은 다른 목록 모두에 저장되어있는 번호와 J (점프)가 필요합니다. 이 코드를 어떻게 작성해야합니까?

나는 시도 다음 그러나이 동작하지 않습니다 :

with open('C:\\Python33\\PIXB.DAT', 'r') as file: 
    for line in file: 
     line = line.split('#') 

을 내가 그 코드를 실행하고 내 목록에서 전체 첫 번째 줄 제거 : 다음의 나머지 부분을

-2000 -2000 -2000 # THE FRAME, origin point, 1 

을 내 값은 여전히 ​​#이 붙어 있습니다 (옆에 숫자가 붙습니다.)

저는 다음 출력을 원합니다 :

,438,445,

내가 원하는 같은 출력 (위) 그래서 (아래) 같은 점프 비트에 선회 J와 순서쌍의 집합으로 바꿀 수 있습니다 : 당신은 그냥 처음 세를 원한다면

[-2000, -2000, -2000],[-2000, 379, -2000],[2000, 379, -2000],[2000, -2000, -2000],[-2000, -2000, -2000],[JUMP],etc... 
+0

'str.split()'사용 – aIKid

+0

[_anything_] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)을 사용해 보셨나요? – martineau

+0

나는 .split()을 시도했으나 값의 첫 번째 줄을 제거합니다. [-2000 -2000 -2000 # THE FRAME, origin point, 1] 나머지 자리는 모두 # – user2840327

답변

0

합니다 (j 라인 이외의) 라인에서 숫자, 여기 당신이 할 수있는 작업은 다음과 같습니다 귀하의 예제 데이터를

results = [] 
with open('C:\\Python33\\PIXB.DAT', 'r') as file: 
    for line in file: 
     values = line.split() # splits on any whitespace 
     if len(values) > 1 # not the j line 
      results.extend(values[:3]) # add three values to the results list 
     else: 
      results.append(values[0]) # add the "j" to the list 

,이 줄 것이다 results 같음 :

[-2000, -2000, -2000, -2000, 379, -2000, 2000, 379, -2000, 2000, 「-2000」, 「-2000」, 「-2000」, 「-2000」, 「-2000」, 「j」, 「2000」, 「379」, 「-1190」, 「2000」, 「-2000」 '-1190', '-2000', '-2000', '-1190']

줄 당 세 개의 값을 문자열로 남기지 않고 정수로 바꾸려면 extend 호출 위로 :

results.extend(int(x) for x in values[:3]) 

는,499에 extend을 변경하지 않고 결과 목록에서 그들을 밖으로 평평보다, 함께 줄에 세 개의 번호를 유지하려면(값을 int으로 설정하면 생성자 표현식 주위에 tuple(...) 또는 [...]을 입력합니다).

관련 문제