2015-03-16 4 views
0

Итак, мой код:Как остановить печатные линии?

file = open("save_file.txt") 

for each_line in file: 
    s = {} 
    (s['name'], s['race'], s['class'], s['FOR'], s['INT'], s['DES']) = each_line.split(";") 
    print(s['name']) 
    print(s['race']) 
    print(s['class']) 
    print(s['FOR']) 
    print(s['INT']) 
    print(s['DES']) 
file.close() 

save_file.txt:

Nome: d;Raça: Humano;Classe: Mago;FOR: 5;INT: 7;DES: 5 
Nome: g;Raça: umano;Classe: Mo;FOR: 56;INT: 47;DES: 85 

Я хочу, чтобы программа для печати только первой линии, но я не хочу, чтобы удалить вторую строку. Это возможно?

+1

проверить мое решение –

ответ

0

Решив не печатать очень отличается от удаления. Вы могли бы сделать что-то вроде:

with open("save_file.txt") as f: 
    for each_line in f: 
     s = {} 
     (s['name'], s['race'], s['class'], s['FOR'], s['INT'], s['DES']) = each_line.split(";") 
     print(s['name']) 
     print(s['race']) 
     print(s['class']) 
     print(s['FOR']) 
     print(s['INT']) 
     print(s['DES']) 
     break #<--- 

Он вспыхивает из цикла, когда для break встречается и было бы просто напечатать одну строку из файла.

Кроме того, это использует диспетчер контекста with, чтобы избежать явного закрытия файла позже.


Редактировать

# Read all lines into lines list, each element is a dictionary 
lines = [] 
with open("save_file.txt") as f: 
    for line in f: 
     s = {} 
     (s['name'], s['race'], s['class'], s['FOR'], s['INT'], s['DES']) = line.split(";") 
     lines.append(s) 

# Print first line 
s = lines[0] 
print(s['name']) 
print(s['race']) 
print(s['class']) 
print(s['FOR']) 
print(s['INT']) 
print(s['DES']) 

# Print second line 
s = lines[1] 
print(s['name']) 
print(s['race']) 
print(s['class']) 
print(s['FOR']) 
print(s['INT']) 
print(s['DES']) 

# Or with a Function 
def print_line(lines, num): 
    s = lines[num] 
    print(s['name']) 
    print(s['race']) 
    print(s['class']) 
    print(s['FOR']) 
    print(s['INT']) 
    print(s['DES']) 

# Print third line 
print_line(lines, 2) 
+0

Спасибо, есть способ распечатать только вторую строку? –

+0

См. Мое редактирование, чтобы прочитать все строки сразу, а затем напечатать любую строку или строки, которые вы хотите позже. – jedwards

+1

Спасибо! Вы решили мои две проблемы –

0

разорвать петлю после первой итерации все ...

for each_line in file: 
    s = {} 
    (s['name'], s['race'], s['class'], s['FOR'], s['INT'], s['DES']) = each_line.split(";") 
    print(s['name']) 
    print(s['race']) 
    print(s['class']) 
    print(s['FOR']) 
    print(s['INT']) 
    print(s['DES']) 
    break 
+0

Спасибо, есть способ, чтобы напечатать только вторую строчку? –

+1

есть. Используйте число .. нарисуйте его в цикле ... и примените проверку выше всех print..if (number == 2) print..so он будет печатать, когда будет вторая строка –

+0

@ MatracadePlantão: но то, что вы пытаетесь делать? –