webentwicklung-frage-antwort-db.com.de

Wie liest man eine Textdatei in eine Stringvariable?

Ich verwende das folgende Codesegment, um eine Datei in Python zu lesen:

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

Eingabedatei ist:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

und wenn ich Daten drucke, bekomme ich

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN\n', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Wie ich sehe, sind die Daten in list Form. Wie mache ich es String? Und wie entferne ich auch die Zeichen "\n", "[" und "]" daraus?

743
klijo

Du könntest benutzen:

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

benutze read (), nicht readline ()

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

Sie können aus einer Datei in einer Zeile lesen:

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

Bitte beachten Sie, dass die Datei dadurch nicht explizit geschlossen wird.

CPython schließt die Datei, wenn sie als Teil der Garbage Collection beendet wird.

Andere Python-Implementierungen werden dies jedoch nicht tun. Um tragbaren Code zu schreiben, ist es besser, with zu verwenden oder die Datei explizit zu schließen. Kurz ist nicht immer besser. Siehe https://stackoverflow.com/a/7396043/362951

54
Nafis Ahmad

Der einfache Weg:

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

Verwendung von with (empfohlen):

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

Hinweis: Die Datei muss nicht geschlossen werden, with macht automagically .

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

join () fügt eine Liste von Strings hinzu, und rstrip () ohne Argumente trennt Leerzeichen, einschließlich Zeilenumbrüche, vom Ende der Strings.

28
MagerValp

In Python 3.5 oder höher können Sie mit pathlib den Inhalt der Textdatei in eine Variable kopieren und die Datei in einer Zeile schließen:

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

und dann können Sie str.replace verwenden, um die Zeilenumbrüche zu entfernen:

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

Ich habe einige Zeit damit herumgetüftelt und benutze lieber read in Kombination mit rstrip. Ohne rstrip("\n") fügt Python am Ende der Zeichenfolge eine neue Zeile ein, was in den meisten Fällen nicht sehr nützlich ist.

with open("myfile.txt") as f:
    file_content = f.read().rstrip("\n")
    print file_content
8
whirlwin

Dies kann mit der read () -Methode erfolgen:

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

Oder da der Standardmodus selbst "r" (Lesen) ist, verwenden Sie einfach

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

Es ist schwer zu sagen, was genau Sie wollen, aber so etwas sollte Ihnen den Einstieg erleichtern

with open ("data.txt", "r") as myfile:
    data = ' '.join([line.replace('\n', '') for line in myfile.readlines()])
6
Chris Eberle

Dies ist eine einzeilige, kopierfähige Lösung, die auch das Dateiobjekt schließt:

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

Sie können auch jede Zeile entfernen und zu einer abschließenden Zeichenfolge verketten.

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

Das würde auch gut funktionieren.

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

f.close()


print string
2
hungneox

sie können dies in zwei Zeilen Code komprimieren !!!

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

wenn Ihre Datei liest:

hello how are you?
who are you?
blank blank

python-Ausgabe

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

python3: Google "Listenverständnis", wenn die eckige Klammer-Syntax für Sie neu ist.

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

Hast du das probiert?

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

print(y)

Ich habe nicht das Gefühl, dass jemand den [] Teil Ihrer Frage angesprochen hat. Wenn Sie jede Zeile in Ihre Variable einlesen, da Sie vor dem Ersetzen von\n durch '' mehrere Zeilen hatten, erstellten Sie eine Liste. Wenn Sie eine Variable von x haben, drucken Sie sie einfach aus

oder drucken (x)

oder str (x)

Sie sehen die gesamte Liste mit den Klammern. Wenn Sie jedes Element der (Sortierreihenfolge) aufrufen

x [0] dann werden die Klammern weggelassen. Wenn Sie die str () - Funktion verwenden, sehen Sie nur die Daten und nicht '' entweder . Str (x [0])

1
John Galbraith

Ich bin überrascht, dass niemand splitlines() erwähnt hat.

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

Die Variable data ist jetzt eine Liste, die beim Drucken folgendermaßen aussieht:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Beachten Sie, dass es keine Zeilenumbrüche gibt (\n).

An diesem Punkt klingt es so, als würden Sie die Zeilen an die Konsole zurückgeben, was Sie mit einer for-Schleife erreichen können:

for line in data:
    print line
1
Julian

Das funktioniert: Ändern Sie Ihre Datei in:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

Dann:

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

Dadurch wird eine Liste mit dem Namen words erstellt, die gleich ist:

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Damit wurde das "\ n" entfernt. Um den Teil über die Klammern zu beantworten, die Ihnen in die Quere kommen, tun Sie dies einfach:

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

Oder:

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

Dies gibt zurück:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
0
PyGuy

Vielleicht könntest du das versuchen? Ich benutze dies in meinen Programmen.

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]

Dieser Code hilft Ihnen beim Lesen der ersten Zeile. Wenn Sie die Option list and split verwenden, können Sie das durch Leerzeichen getrennte erste Zeilenwort konvertieren und in einer Liste speichern.

Dann können Sie problemlos auf jedes Word zugreifen oder es in einem String speichern.

Sie können dasselbe auch mit einer for-Schleife machen.

0

Regulärer Ausdruck funktioniert auch:

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

print (l)

["Ich", "fühle", "leer" und "tot", "drinnen"]

0
Alex