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?
Du könntest benutzen:
with open('data.txt', 'r') as myfile:
data=myfile.read().replace('\n', '')
benutze read (), nicht readline ()
with open('data.txt', 'r') as myfile:
data = myfile.read()
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
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 .
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.
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', '')
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
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()
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()])
Dies ist eine einzeilige, kopierfähige Lösung, die auch das Dateiobjekt schließt:
_ = open('data.txt', 'r'); data = _.read(); _.close()
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.
f = open('data.txt','r')
string = ""
while 1:
line = f.readline()
if not line:break
string += line
f.close()
print string
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
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) ]
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
x
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])
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
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
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()
file = open("myfile.txt", "r")
lines = file.readlines()
str = '' #string declaration
for i in range(len(lines)):
str += lines[i].rstrip('\n') + ' '
print str
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.
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"]