2017-10-16 12 views
1

J'ai quelques lignes dans un document texte que j'essaie de remplacer/supprimer. Le document est dans le codage de caractères ISO-8859-1.Collage des caractères ISO-8859-1 en Python IDLE - IDLE les modifie

Lorsque j'essaie de copier cette ligne dans mon script Python pour la remplacer, elle ne correspondra pas. Si je réduis la ligne et supprimer jusqu'à la première guillemet "il remplacera bien

-à-dire

desc = [x.replace('Random text “^char”:', '') for x in desc] 

Cela correspond pas si je rentre..

desc = [x.replace('Random text :', '') for x in desc] 

Il J'ai vérifié que ce n'est pas le symbole^ Clairement, Python IDLE n'utilise pas le même jeu de caractères que mon fichier texte et change le symbole quand je le colle dans le script. mon script pour chercher cette ligne si elle ne gère pas le même cha coureurs?

+0

Quelle version Python utilisez-vous? Il est très important de mentionner cela dans les questions relatives aux problèmes de codage, car il existe des différences majeures entre Python 2 et Python 3 dans la façon dont ils gèrent Unicode. –

+0

Je ne pense pas que votre document utilise ISO-8859-1 puisque ce codage n'a pas '" 'ou' "'. Cependant, il est très courant que le texte codé avec la page de codes Windows 1252 soit marqué comme ISO-8859-1, comme mentionné dans l'article de Wikipedia sur [Windows-1252] (https://en.wikipedia.org/wiki/Windows-1252). –

+0

J'utilise Python 3.6.0. Comment savoir quel est le codage utilisé par le document? Y a-t-il un moyen de coller le personnage dans mon script une fois que je sais ce que c'est sûr? –

Répondre

1

Malheureusement, il n'y a pas de moyen infaillible de déterminer l'encodage d'un document en texte brut, bien qu'il existe des paquets qui peuvent faire de très bonnes suppositions en analysant le contenu du document. Un module tiers populaire pour la détection d'encodage est chardet. Ou vous pouvez utiliser manuellement des essais et des erreurs avec certains encodages populaires et voir ce qui fonctionne. Une fois que vous avez déterminé le codage correct, l'opération de remplacement elle-même est simple en Python 3. L'idée de base est de passer le codage à la fonction open, de sorte que vous pouvez écrire des objets chaîne Unicode dans le fichier, ou lire Objets de chaîne Unicode du fichier. Voici une courte démo. Cela fonctionnera correctement si le codage de votre terminal est défini sur UTF-8. Je l'ai testé sur Python 3.6.0, à la fois dans le shell Bash et dans idle3.6.

fname = 'test.txt' 
encoding = 'cp1252' 

data = 'This is some Random text “^char”: for testing\n' 
print(data) 

# Save the text to file 
with open(fname, 'w', encoding=encoding) as f: 
    f.write(data) 

# Read it back in 
with open(fname, 'r', encoding=encoding) as f: 
    text = f.read() 

print(text, text == data) 

# Perform the replacement 
target = 'Random text “^char”:' 

out = text.replace(target, 'XXX') 
print(out) 

sortie

This is some Random text “^char”: for testing 

This is some Random text “^char”: for testing 
True 
This is some XXX for testing