2009-07-29 7 views
2

Ceci est une sorte de question de débutant, mais je n'ai pas trouvé de solution. Je lis une liste de chaînes à partir d'un fichier et essaie d'obtenir un échantillon aléatoire à 5 éléments avec random.sample, mais la liste resultung contient uniquement des caractères. Pourquoi donc? Comment puis-je obtenir une liste aléatoire de chaînes de caractères?random.sample renvoie uniquement les caractères au lieu des chaînes

C'est ce que je fais:

names = random.sample(open('names.txt').read(), 5) 
    print names 

Cela donne une liste de caractères à cinq éléments comme:

['\x91', 'h', 'l', 'n', 's'] 

Si je laisse de côté la partie random.sample et imprimer la liste, il imprime chaque ligne du fichier, qui est le comportement attendu, et prouve que le fichier est lu OK.

Répondre

3

Si les noms sont sur les lignes séparées, RY les suivantes:

names = random.sample(open('names.txt').readlines(), count) 
print names 

Essentiellement, vous allez mal parce que vous devez passer un interable à random.sample(). Quand vous passez une chaîne, elle la traite comme une liste. Si vos noms sont tous sur une ligne, vous devez utiliser split() pour les séparer et passer cette liste à random.sample().

+1

Merci. Maintenant laissez cette question être fanée dans l'inconnu: D –

Questions connexes