2017-08-29 1 views
0

Pourquoi la commande suivante génère-t-elle l'entrée avec la ligne de rupture? Il semble que la ligne de rupture apparaisse après {}. J'ai utilisé la fonction format avant et ça a bien fonctionné. Que s'est-il passé maintenant?Rupture de ligne irrégulière lors de l'impression avec str.format

print('true: {}, estimated: {}'.format(number_a, number_b)) 

true: 3 
, estimated: 3 
+0

'Type (NUMBER_A)' – nu11p01n73R

+1

Pouvez-vous imprimer 'number_a' sur son propre s'il vous plaît. Est-ce réellement un entier, ou est-ce une chaîne avec un retour à la ligne de fin? –

Répondre

3

Je pense que vous est en train de lire ces chiffres à partir d'un fichier, ce qui signifie que vous lisez dans la chaîne '3\n' au lieu du numéro 3.

Essayez de supprimer la nouvelle ligne de fuite avec str.strip:

print('true: {}, estimated: {}'.format(number_a.rstrip(), number_b)) 

Une meilleure option serait de désinfecter vos données quand vous le lisez, donc vous n'avez pas à vous soucier des choses comme ça.

numbers = [] 
with open(...) as f: 
    for line in f: 
     numbers.append(line.strip()) 

a, b = numbers[:2] # first two elements 

print('true: {}, estimated: {}'.format(a, b)) 

De toute évidence, vos données ne suivent pas le format dans cet exemple, mais les plats à emporter est de gérer ces choses à la source.

1

Je ne parviens pas à reproduire ce problème. Vos variables number_a et number_b chaîne par hasard? Si oui, il peut contenir une nouvelle ligne. Essayez ceci:

print('true: {}, estimated: {}'.format(int(number_a), int(number_b))) 

Exemple:

number_a = '4\n' 
number_b = '5' 
print('true: {}, estimated: {}'.format(int(number_a), int(number_b))) 

Sortie:

true: 4, estimated: 5