web-dev-qa-db-fra.com

Supprimer la nouvelle ligne/renvoyer le chariot dans la sortie du fichier

J'ai une liste de mots qui contient des retours pour séparer chaque nouvelle lettre. Existe-t-il un moyen de supprimer par programme chacun de ces retours à l'aide d'E/S sur fichier en Python? 

Edit: Je sais comment manipuler des chaînes pour supprimer les retours. Je souhaite modifier physiquement le fichier afin que ces déclarations soient supprimées.

Je cherche quelque chose comme ça:

wfile = open("wordlist.txt", "r+")           
for line in wfile:
    if len(line) == 0:
        # note, the following is not real... this is what I'm aiming to achieve.
        wfile.delete(line)
10
Parseltongue
>>> string = "testing\n"
>>> string
'testing\n'
>>> string = string[:-1]
>>> string
'testing'

Ceci dit en gros "coupe la dernière chose de la chaîne" Le : est l'opérateur "slice". Ce serait une bonne idée de lire comment cela fonctionne tel quel very utile.

MODIFIER

Je viens de lire votre question mise à jour. Je pense que je comprends maintenant. Vous avez un fichier, comme ceci:

aqua:test$ cat wordlist.txt 
Testing

This

Wordlist

With

Returns

Between

Lines

et vous voulez vous débarrasser des lignes vides. Au lieu de modifier le fichier en cours de lecture, créez un nouveau fichier dans lequel vous pouvez écrire les lignes non vides de l'ancien fichier, comme suit:

# script    
rf = open("wordlist.txt")
wf = open("newwordlist.txt","w")
for line in rf:
    newline = line.rstrip('\r\n')
    wf.write(newline)
    wf.write('\n')  # remove to leave out line breaks
rf.close()
wf.close()

Tu devrais obtenir:

aqua:test$ cat newwordlist.txt 
Testing
This
Wordlist
With
Returns
Between
Lines

Si vous voulez quelque chose comme

TestingThisWordlistWithReturnsBetweenLines

juste commenter 

wf.write('\n')
17
aqua

Vous pouvez utiliser la méthode rstrip d'une chaîne pour supprimer les caractères de nouvelle ligne d'une chaîne.

>>> 'something\n'.rstrip('\r\n')
>>> 'something'
15
Senthil Kumaran

Le plus efficace est de ne pas spécifier de valeur de strip

'\nsomething\n'.split() enlèvera tous les caractères spéciaux et les espaces de la chaîne

3
Jakob Bowyer

simplement utiliser, cela résout le problème. 

   string.strip("\r\n")
1
Venu Murthy

Supprimer les lignes vides du fichier:

#!/usr/bin/env python
import fileinput

for line in fileinput.input("wordlist.txt", inplace=True):
    if line != '\n':
       print line,

Le fichier est déplacé vers un fichier de sauvegarde et la sortie standard est dirigée vers le fichier d'entrée.

1
jfs
'whatever\r\r\r\r\r\r\r\r\n\n\n\n\n'.translate(None, '\r\n')

résultats

'whatever'
0
eatkimchi