Base fichier python-io variables avec les énumérer
Python et en essayant d'apprendre les ficelles de l'e/s de fichier.
Je suis en train de travailler avec les lignes de traction à partir d'un grand (2 millions de ligne) du fichier dans ce format:
56fr4
4543d
4343d
5irh3
Voici la fonction que j'utilise pour renvoyer un code:
def getCode(i):
with open("test.txt") as f:
for index, line in enumerate(f):
if index == i:
code = # what does it equal?
break
return code
Une fois que l'index à la bonne place (i), que la syntaxe dois-je utiliser pour définir la variable code?
Er,
nope,
Cette question a été posée (plusieurs fois) avant de (stackoverflow.com/questions/2081836/...) et il y a quelques bonnes réponses, avec la discussion; dans certains cas les énumérer et certains linecache (qui peut être plus rapide). Il y a aussi quelques mauvaises réponses, qui est elle-même éducative.
line
, sûrement?nope,
line.strip()
=PCette question a été posée (plusieurs fois) avant de (stackoverflow.com/questions/2081836/...) et il y a quelques bonnes réponses, avec la discussion; dans certains cas les énumérer et certains linecache (qui peut être plus rapide). Il y a aussi quelques mauvaises réponses, qui est elle-même éducative.
OriginalL'auteur some1 | 2011-06-24
Vous devez vous connecter pour publier un commentaire.
code = line.strip()
attribuera un code au numéro de la ligne qui est égal à i, tout en supprimant le point à la ligne.
vous devez également mettre à jour votre code un peu
pourquoi vous avez besoin de
.strip()
oui, " 'APPARTENANCE LINGUISTIQUE'," est à mon actuel temp.txt'
le "code de retour" doit être avant la pause? Je pensais que le retour était censé être la dernière ligne de la fonction..?
eh bien, si vous pause avant de retourner le code, le code ne sera pas retourné, et si vous le code de retour à l'extérieur de la
if
vous courez le risque de code qui ne sont jamais définis. Essayez-la. Je viens de le faire avant de répondre. vous pouvez définir etelse
ou untry
de rendre le code à la fin, mais c'est parfaitement correct.Vous pouvez
return
à partir de n'importe où à l'intérieur d'une fonction. (Si vous devrait est un gros argument; essayez de faire des choses que vous pouvez comprendre facilement.) Lebreak
ici est inutile, et ne peut jamais être atteint. Dès qu'un "retour" est rencontré, que l'appel de la fonction cesse de faire plus de travail et rentre à n'importe quelle valeur.pas de problème. Je suis content de son travail.
OriginalL'auteur matchew
enumerate
transforme un itérateur dans un autre, de telle sorte que les choses que vous itération sur le devenir des couples (IDENTIFIANT numérique, élément d'origine de la sous-jacentes itérateur).Dans notre cas:
for index, line in enumerate(f):
f
est l'objet de fichier. Fichier les objets sont des itérateurs: ils itérer sur les lignes du fichier.Nous transformer cela en un itérateur sur (numéro de ligne, ligne à partir d'un fichier) paires.
La
for
la syntaxe de la boucle itère sur l'itérateur, et attribue à l' (numéro de ligne, ligne à partir d'un fichier) paire de variables: (indice de ligne). C'est le comportement normal de l'attribution d'un n-uplet à l'autre.Ainsi, à chaque passage dans la boucle,
index
est affectée d'un numéro de ligne, etline
est affectée à la ligne correspondante dans le fichier. La ligne du fichier est ce que vous voulez (peut-être avec une certaine mise en forme), etline
contient, donc...Si tout ce qui précède n'a pas de bon sens, vous avez probablement besoin de re-lire l'introduction à la langue.
enumerate
et pas seulement lui, "ce dont il a besoin", comme je l'ai fait. ou copier un lien vers la documentation de quelqu'un d'autre l'a fait. J'ai vu quelqu'un plus tôt de répondre à une question avec tout simplement de "sudo" et de l'avoir lien wikipedia =(Je fais souvent des réponses à des questions que de façon laconique, mais parfois, il semble nécessaire de parler de gens à travers les choses.
Je suis en train de faire des scripts de base le long de la manière que j'ai appris. Si je viens de "lire une introduction" il ne colle pas que ce soit, donc j'essaie de lire un peu, puis faire un petit projet, et ainsi de suite. Est-il quelque part sur le conseil que je peux demander à ma plus facile de questions sans que les gens s'énerve-t-il? J'ai lu les énumérer documentation à plusieurs reprises, mais elle n'a pas de sens pour moi, la façon dont elle a été formulée.
OriginalL'auteur Karl Knechtel