J'utilise le segment de code suivant pour lire un fichier en python:
with open ("data.txt", "r") as myfile:
data=myfile.readlines()
Le fichier d'entrée est:
LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
et quand j'imprime des données, je reçois
['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN\n', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']
Comme je le vois, les données sont en list
forme. Comment puis-je le faire en chaîne? Et comment puis-je supprimer les "\n"
, "["
et les "]"
personnages de lui?
Réponses:
Vous pouvez utiliser:
la source
open("data.txt").read().replace('\n','')
place?rstrip('\n')
ne supprimera que la nouvelle ligne de la dernière ligne, lareplace('\n','')
supprimera partout (en faisant essentiellement le fichier entier sur une ligne)N'utilisez
read()
pasreadline()
:la source
encoding="utf-8"
Vous pouvez lire à partir d'un fichier sur une seule ligne:
Veuillez noter que cela ne ferme pas le fichier explicitement.
CPython fermera le fichier à sa sortie dans le cadre de la récupération de place.
Mais les autres implémentations de python ne le feront pas. Pour écrire du code portable, il est préférable d'utiliser
with
ou de fermer le fichier explicitement. Court n'est pas toujours mieux. Voir https://stackoverflow.com/a/7396043/362951la source
open
doit être utilisé dans unewith ... as
instruction.with ... as
déclaration apporte-t-elle quelque chose?with ... as
oustr.close()
comme démontré dans la réponse de Pedro. En savoir plus sur l'importance de fermer des fichiers icistr()
de suivre les fonctions intégréesPour joindre toutes les lignes dans une chaîne et supprimer les nouvelles lignes que j'utilise normalement:
la source
Dans Python 3.5 ou version ultérieure, à l'aide de pathlib, vous pouvez copier le contenu d'un fichier texte dans une variable et fermer le fichier sur une seule ligne:
puis vous pouvez utiliser str.replace pour supprimer les sauts de ligne:
la source
join () joindra une liste de chaînes, et rstrip () sans arguments supprimera les espaces, y compris les sauts de ligne, à la fin des chaînes.
la source
Cela peut être fait en utilisant la méthode read ():
Ou comme le mode par défaut lui-même est «r» (lecture), utilisez simplement,
la source
J'ai bidouillé avec cela pendant un certain temps et j'ai préféré utiliser l'utilisation
read
en combinaison avecrstrip
. Sansrstrip("\n")
, Python ajoute une nouvelle ligne à la fin de la chaîne, ce qui dans la plupart des cas n'est pas très utile.la source
Il est difficile de dire exactement ce que vous recherchez, mais quelque chose comme ça devrait vous aider à démarrer:
la source
data = ' '.join(line.replace('\n', '') for line in myfile)
ou la version de MagerValp.Je suis surpris que personne ne l'ait
splitlines()
encore mentionné .La variable
data
est maintenant une liste qui ressemble à ceci une fois imprimée:Notez qu'il n'y a pas de nouvelle ligne (
\n
).À ce stade, il semble que vous souhaitiez imprimer les lignes sur la console, ce que vous pouvez réaliser avec une boucle for:
la source
Vous pouvez également supprimer chaque ligne et concaténer dans une chaîne finale.
Cela fonctionnerait également très bien.
la source
vous pouvez compresser cela en une à deux lignes de code !!!
si votre fichier se lit:
sortie python
la source
Il s'agit d'une solution à copier-coller d'une ligne qui ferme également l'objet fichier:
la source
la source
string += line
doivent être évitées. Certaines versions de Python peuvent réussir à éviter le comportement de O (n ^ 2) ici, mais toutes les autres réponses qui ont été données sont meilleures que cela. De plus, vous n'avez pas supprimé les sauts de ligne qui ont été demandés, donc votre code est juste un moyen très lent de le fairestring = f.read()
python3: Google "list comphrension" si la syntaxe entre crochets est nouvelle pour vous.
la source
Avez-vous essayé cela?
la source
Je ne pense pas que quiconque ait répondu à la partie de votre question. Lorsque vous avez lu chaque ligne dans votre variable, car il y avait plusieurs lignes avant de remplacer le \ n par '', vous avez fini par créer une liste. Si vous avez une variable de x et l'imprimez juste en
X
ou imprimer (x)
ou str (x)
Vous verrez la liste entière avec les crochets. Si vous appelez chaque élément du (tableau de sortes)
x [0] puis il omet les crochets. Si vous utilisez la fonction str (), vous ne verrez que les données et non le '' non plus. str (x [0])
la source
Vous pourriez peut-être essayer ça? J'utilise cela dans mes programmes.
la source
L'expression régulière fonctionne aussi:
la source
Pour supprimer les sauts de ligne à l'aide de Python, vous pouvez utiliser la
replace
fonction d'une chaîne.Cet exemple supprime les 3 types de sauts de ligne:
Exemple de fichier:
Vous pouvez l'essayer en utilisant ce scénario de relecture:
https://repl.it/repls/AnnualJointHardware
la source
Cela fonctionne: changez votre fichier en:
Alors:
Cela crée une liste nommée
words
égale à:Cela s'est débarrassé du "\ n". Pour répondre à la partie sur les crochets qui vous gênent, faites simplement ceci:
Ou:
Cela renvoie:
la source
Ce code vous aidera à lire la première ligne, puis en utilisant l'option liste et fractionnement, vous pouvez convertir le premier mot de ligne séparé par un espace à stocker dans une liste.
Vous pouvez alors accéder facilement à n'importe quel mot, ou même le stocker dans une chaîne.
Vous pouvez également faire la même chose en utilisant une boucle for.
la source
la source
Essayez ce qui suit:
Attention: Il ne supprime pas le
\n
. C'est juste pour voir le texte comme s'il n'y avait pas\n
la source