web-dev-qa-db-fra.com

Comment lire un fichier texte dans une variable chaîne?

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

743
klijo

Vous pouvez utiliser:

with open('data.txt', 'r') as myfile:
    data=myfile.read().replace('\n', '')
1015
sleeplessnerd

utilisez read (), pas readline ()

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

Vous pouvez lire un fichier en une 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 du garbage collection.

Mais d'autres implémentations en python ne le seront pas. Pour écrire du code portable, il est préférable d’utiliser with ou de fermer le fichier explicitement. Bref, ce n'est pas toujours mieux. Voir https://stackoverflow.com/a/7396043/362951

54
Nafis Ahmad

La manière simple:

file = open('data.txt', 'r')
text = file.read().strip()
file.close()

Utilisation de with (recommandé):

with open('data.txt', encoding='utf8') as f:
    text = f.read().strip()

Remarque: pas besoin de fermer le fichier, with fait automatiquement .

39
Pedro Lobito
with open("data.txt") as myfile:
    data="".join(line.rstrip() for line in myfile)

join () rejoindra une liste de chaînes et rstrip (), sans argument, supprimera les espaces, y compris les nouvelles lignes, à la fin des chaînes.

28
MagerValp

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

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

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

txt = txt.replace('\n', '')
22
Jonathan Sudiaman

Cela fait un moment que je bricole avec cela 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
8
whirlwin

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' (lire), utilisez donc simplement,

text_as_string = open('Your_Text_File.txt').read()
7
Loochie

Il est difficile de dire exactement ce que vous recherchez, mais quelque chose comme cela 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

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

_ = open('data.txt', 'r'); data = _.read(); _.close()
5
Edward D'Souza

Vous pouvez également supprimer chaque ligne et les 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 aussi très bien.

4
Sai Kiriti Badam
f = open('data.txt','r')
string = ""
while 1:
    line = f.readline()
    if not line:break
    string += line

f.close()


print string
2
hungneox

vous pouvez compresser cela en une ligne de code !!!

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

si votre fichier se lit comme suit:

hello how are you?
who are you?
blank blank

sortie python

hello how are you? who are you? blank blank
2
Michael Smith

python3: "liste de compréhension" de Google si la syntaxe entre crochets est nouvelle pour vous.

 with open('data.txt') as f:
     lines = [ line.strip( ) for line in list(f) ]
1
gerardw

Avez-vous essayé cela?

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

print(y)

Je ne pense pas que quiconque ait répondu à la partie [] de votre question. Lorsque vous avez lu chaque ligne de votre variable, il y avait plusieurs lignes avant que vous ne remplaciez le\n par '', vous avez fini par créer une liste. Si vous avez une variable de x et l’imprimez juste en

ou imprimer (x)

ou str (x)

Vous verrez la liste complète avec les crochets. Si vous appelez chaque élément de la (tableau de tri)

x [0] alors il omet les crochets. Si vous utilisez la fonction str (), vous ne verrez que les données et non le '' ..... str (x [0])

1
John Galbraith

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 une fois imprimée:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Notez qu'il n'y a pas de saut de ligne (\n).

À ce stade, il semble que vous souhaitiez imprimer les lignes sur la console, ce que vous pouvez obtenir avec une boucle for:

for line in data:
    print line
1
Julian

Cela fonctionne: Changez votre fichier en:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

Ensuite:

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 concernant les crochets qui vous gênent, procédez comme suit:

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 retourne:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
0
PyGuy

Peut-être que tu pourrais essayer ça? Je l'utilise 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()
0
user11735387
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
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 à utiliser l'option de liste et de division, vous pourrez convertir la première ligne Word séparée par des espaces pour la stocker dans une liste.

Que vous pouvez facilement accéder à 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

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

0
Alex