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 sous la forme list. Comment puis-je le faire en chaîne? Et comment puis-je également supprimer les caractères "\n", "[" et "]"?

919
klijo 3 déc. 2011 à 20:47

24 réponses

Meilleure réponse

Vous pouvez utiliser:

with open('data.txt', 'r') as file:
    data = file.read().replace('\n', '')
1250
Louis 30 mars 2019 à 13:26

Pour joindre toutes les lignes dans une chaîne et supprimer les nouvelles lignes que j'utilise normalement:

with open('t.txt') as f:
  s = " ".join([x.strip() for x in f]) 
49
Pedro Lobito 3 oct. 2019 à 04:36
f = open('data.txt','r')
string = ""
while 1:
    line = f.readline()
    if not line:break
    string += line

f.close()


print string
2
hungneox 3 déc. 2011 à 16:49

Vous pouvez également supprimer chaque ligne et concaténer dans une chaîne finale.

myfile = open("data.txt","r")
data = ""
lines = myfile.readlines()
for line in lines:
    data = data + line.strip();

Cela fonctionnerait également très bien.

4
OrionMD 28 sept. 2018 à 10:22

Vous pouvez lire à partir d'un fichier sur une seule ligne:

str = open('very_Important.txt', 'r').read()

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/362951

66
mit 8 mai 2018 à 16:34

Cela peut être fait en utilisant la méthode read ():

text_as_string = open('Your_Text_File.txt', 'r').read()

Ou comme le mode par défaut lui-même est «r» (lecture), utilisez simplement,

text_as_string = open('Your_Text_File.txt').read()
12
Loochie 26 févr. 2019 à 07:58
with open("data.txt") as myfile:
    data="".join(line.rstrip() for line in myfile)

Join () joindra une liste de chaînes, et rstrip () sans argument supprimera les espaces, y compris les sauts de ligne, à la fin des chaînes.

31
MagerValp 3 déc. 2011 à 18:47

Il est difficile de dire exactement ce que vous recherchez, mais quelque chose comme ça devrait vous aider à démarrer:

with open ("data.txt", "r") as myfile:
    data = ' '.join([line.replace('\n', '') for line in myfile.readlines()])
6
Chris Eberle 3 déc. 2011 à 16:51

Il s'agit d'une solution à copier-coller d'une ligne qui ferme également l'objet fichier:

_ = open('data.txt', 'r'); data = _.read(); _.close()
4
Edward D'Souza 23 août 2018 à 15:50
with open(player_name, 'r') as myfile:
 data=myfile.readline()
 list=data.split(" ")
 word=list[0]

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.

0
Lakshaya Maheshwari 23 janv. 2016 à 10:26

Cela fonctionne: changez votre fichier en:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

Alors:

file = open("file.txt")
line = file.read()
words = line.split()

Cela crée une liste nommée words qui est égale à:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Cela s'est débarrassé du "\ n". Pour répondre à la partie sur les crochets qui vous gênent, faites simplement ceci:

for word in words: # Assuming words is the list above
    print word # Prints each word in file on a different line

Ou:

print words[0] + ",", words[1] # Note that the "+" symbol indicates no spaces
#The comma not in parentheses indicates a space

Cela renvoie:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
0
PyGuy 20 mai 2015 à 18:34

L'expression régulière fonctionne aussi:

import re
with open("depression.txt") as f:
     l = re.split(' ', re.sub('\n',' ', f.read()))[:-1]

print (l)

[«Je», «sentir», «vide», «et», «mort», «à l'intérieur»]

1
Alex 13 août 2019 à 13:08

Je suis surpris que personne n'ait encore mentionné splitlines().

with open ("data.txt", "r") as myfile:
    data = myfile.read().splitlines()

La variable data est maintenant une liste qui ressemble à ceci lorsqu'elle est imprimée:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

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:

for line in data:
    print line
5
Julian 8 févr. 2018 à 11:59

Dans Python 3.5 ou version ultérieure, en utilisant pathlib, vous pouvez copier contenu du fichier texte dans une variable et fermez le fichier sur une seule ligne:

from pathlib import Path
txt = Path('data.txt').read_text()

Puis vous pouvez utiliser str.replace pour supprimer les nouvelles lignes:

txt = txt.replace('\n', '')
37
Jonathan Sudiaman 25 févr. 2019 à 17:48

Cela fait un moment que je bidouille avec et préfère utiliser read en combinaison avec rstrip. Sans rstrip("\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.

with open("myfile.txt") as f:
    file_content = f.read().rstrip("\n")
    print file_content
9
arboc7 19 avril 2018 à 03:10

Utilisez read(), pas readline():

with open('data.txt', 'r') as myfile:
  data = myfile.read()
601
nucsit026 4 févr. 2020 à 07:40

Pour supprimer les sauts de ligne à l'aide de Python, vous pouvez utiliser la fonction replace d'une chaîne.

Cet exemple supprime les 3 types de sauts de ligne:

my_string = open('lala.json').read()
print(my_string)

my_string = my_string.replace("\r","").replace("\n","")
print(my_string)

Exemple de fichier:

{
  "lala": "lulu",
  "foo": "bar"
}

Vous pouvez l'essayer en utilisant ce scénario de relecture:

https://repl.it/repls/AnnualJointHardware

enter image description here

0
Sma Ma 31 oct. 2019 à 19:12

Essayez ce qui suit:

with open('data.txt', 'r') as myfile:
    data = myfile.read()

    sentences = data.split('\\n')
    for sentence in sentences:
        print(sentence)

Attention: Il ne supprime pas le \n. C'est juste pour visualiser le texte comme s'il n'y avait pas \n

-1
Palak Jain 6 déc. 2019 à 07:55

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])

1
John Galbraith 6 mars 2015 à 20:16
file = open("myfile.txt", "r")
lines = file.readlines()
str = ''                                     #string declaration

for i in range(len(lines)):
    str += lines[i].rstrip('\n') + ' '

print str
0
akD 13 juin 2016 à 08:53

Avez-vous essayé cela?

x = "yourfilename.txt"
y = open(x, 'r').read()

print(y)
2
Ali 2 mars 2018 à 03:04

Python3: Google "liste compréhension" si la syntaxe du crochet est nouvelle pour vous.

 with open('data.txt') as f:
     lines = [ line.strip( ) for line in list(f) ]
2
gerardw 16 nov. 2016 à 13:04

Vous pouvez compresser cela en une à deux lignes de code !!!

content = open('filepath','r').read().replace('\n',' ')
print(content)

Si votre fichier se lit:

hello how are you?
who are you?
blank blank

Sortie python

hello how are you? who are you? blank blank
3
Michael Smith 30 juil. 2018 à 20:34

Vous pourriez peut-être essayer ça? J'utilise cela dans mes programmes.

Data= open ('data.txt', 'r')
data = Data.readlines()
for i in range(len(data)):
    data[i] = data[i].strip()+ ' '
data = ''.join(data).strip()
1
user11735387user11735387 3 juil. 2019 à 20:33
8369219