python - ändern - Lesen einer Datei ohne Zeilenumbrüche



python zeilenumbruch in datei schreiben (4)

Sie können die gesamte Datei lesen und Zeilen mit str.splitlines :

temp = file.read().splitlines()

Oder Sie können den Zeilenumbruch manuell entfernen:

temp = [line[:-1] for line in file]

Hinweis: Diese letzte Lösung funktioniert nur, wenn die Datei mit einem Zeilenumbruch endet, andernfalls verliert die letzte Zeile ein Zeichen.

Diese Annahme trifft in den meisten Fällen zu (insbesondere bei Dateien, die von Texteditoren erstellt werden, die jedoch häufig einen End-Zeilenumbruch hinzufügen).

Wenn Sie dies vermeiden möchten, können Sie am Ende der Datei einen Zeilenumbruch hinzufügen:

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]

Oder eine einfachere Alternative ist, stattdessen den Zeilenumbruch zu entfernen:

[line.rstrip('\n') for line in file]

Oder sogar, obwohl ziemlich unlesbar:

[line[:-(line[-1] == '\n') or len(line)+1] for line in file]

Welche nutzt die Tatsache, dass der Rückgabewert von or ist kein Boolescher, sondern das Objekt, das als wahr oder falsch ausgewertet wurde.

Die readlines Methode entspricht tatsächlich:

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines

Da readline() den Zeilenumbruch behält, behält auch readlines() es bei.

Hinweis: Für die Symmetrie von readlines() writelines() Methode writelines() keine abschließenden Zeilenumbrüche hinzu, sodass f2.writelines(f.readlines()) eine exakte Kopie von f in f2 .

https://code.i-harness.com

In Python aufrufen

temp = open(filename,'r').readlines()

ergibt eine Liste, in der jedes Element eine Zeile in der Datei ist. Es ist ein wenig dumm aber immer noch: readlines() schreibt auch Newline-Zeichen in jedes Element, etwas, das ich nicht passieren möchte. Wie kann ich es vermeiden?


Versuche dies:

u=open("url.txt","r")  
url=u.read().replace('\n','')  
print(url)  

def getText():
    file=open("ex1.txt","r");

    names=file.read().split("\n");
    for x,word in enumerate(names):
        if(len(word)>=20):
            return 0;
            print "length of ",word,"is over 20"
            break;
        if(x==20):
            return 0;
            break;
    else:
        return names;


def show(names):
    for word in names:
        len_set=len(set(word))
        print word," ",len_set


for i in range(1):

    names=getText();
    if(names!=0):
        show(names);
    else:
        break;

temp = open(filename,'r').read().split('\n')




readlines