2013-10-05 3 views
0

У меня есть файл, который я прочитал в списке, который хранит координаты xyz для рисования линий с помощью pygame.удалить символы из списка в 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 

Тогда остальные мои значения по-прежнему имеют # (с последующим номером рядом с ним

I Desire следующий вывод:.

[' -2000 -2000 -2000\n', ' -2000 379 -2000\n', ' 2000 379 -2000\n', ' 2000 -2000 -2000\n', ' -2000 -2000 -2000', 'J\n', ' 2000 -2000 -1190\n', '  2000 -2000 -1190\n',] 

Я хочу, чтобы выход как (выше), поэтому я могу превратить его в набор упорядоченных пар с J поворота в немного прыгать, как (ниже):

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

use 'str.split()' – aIKid

+0

Вы пробовали [_anything_] (http://mattgemmell.com/2008/12/08/what-have-you-tried/)? – martineau

+0

Я попробовал .split(), но удаляет мою первую строку значений [-2000 -2000 -2000 # THE FRAME, исходная точка, 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]) 

Если вы хотите сохранить три числа в каждой строке вместе, а не уплощение их в списке результатов, измените extend на append (и введите tuple(...) или [...] вокруг выражения генератора, если вы превращаете значения в int).

Смежные вопросы