'%' dans une chaîne de caractères

Le
Thomas Paviot
Bonjour à tous,

Je souhaite pouvoir écrire dans un fichier la ligne suivante:

%string

Evidemment, si j'écris:
fp = open('test.txt','w')
fp.write('%string')

J'obtiens une erreur, %s étant utilisé pour le formatage des chaînes de
caractères.

Je suis donc obligé de passer par une étape intermédiaire pour arriver à
mes fins:
fp = open('test.txt','w')
fp.write('%')
fp.write('string')

Vous conviendrez que ce n'est guère élégant. Je cherche donc un moyen
d'arriver au but en n'utilisant qu'un appel à la méthode 'write'. La
solution doit sans doute être triviale, mais je cale complètement. Ce
serait donc avec plaisir que j'accueillerais vos suggestions.

Thomas Paviot
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
moky
Le #18161241
Thomas Paviot a écrit :
Bonjour à tous,

Je souhaite pouvoir écrire dans un fichier la ligne suivante:

%string

Evidemment, si j'écris:
fp = open('test.txt','w')
fp.write('%string')

J'obtiens une erreur, %s étant utilisé pour le formatage des chaînes de
caractères.



Simplement mettre % ne suffit pas ?
C'est ce que j'aurais essayé.

Laurent
remi_inconnu
Le #18130611
On 13 déc, 16:34, Thomas Paviot
Bonjour à tous,

Je souhaite pouvoir écrire dans un fichier la ligne suivante:

%string

Evidemment, si j'écris:
fp = open('test.txt','w')
fp.write('%string')

J'obtiens une erreur, %s étant utilisé pour le formatage des chaîne s de
caractères.

Je suis donc obligé de passer par une étape intermédiaire pour arri ver à
mes fins:
fp = open('test.txt','w')
fp.write('%')
fp.write('string')

Vous conviendrez que ce n'est guère élégant. Je cherche donc un moy en
d'arriver au but en n'utilisant qu'un appel à la méthode 'write'. La
solution doit sans doute être triviale, mais je cale complètement. Ce
serait donc avec plaisir que j'accueillerais vos suggestions.

Thomas Paviot



Bizarre je viens de faire le test et je n'obtient aucune erreur, quel
version de python utilise tu, moi j'utilise la 2.5.2
Bruno Desthuilliers
Le #18131491
Thomas Paviot a écrit :
Bonjour à tous,

Je souhaite pouvoir écrire dans un fichier la ligne suivante:

%string

Evidemment, si j'écris:
fp = open('test.txt','w')
fp.write('%string')

J'obtiens une erreur, %s étant utilisé pour le formatage des chaînes de
caractères.



~ $ python
Python 2.5.1 (r251:54863, Apr 6 2008, 17:20:35)
[GCC 4.1.2 (Gentoo 4.1.2 p1.0.2)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = open("yadda.txt")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory: 'yadda.txt'
>>> f = open("yadda.txt", 'w')
>>> f.write("%string")
>>> f.close()
>>>
~ $ cat yadda.txt
%string


Tu disais ?

Mais bon, si ton problème est d'échapper le '%' dans une chaine, la
réponse est dans la doc : utilise "%%"
Christophe
Le #18142951
Thomas Paviot a écrit :
Bonjour à tous,

Je souhaite pouvoir écrire dans un fichier la ligne suivante:

%string

Evidemment, si j'écris:
fp = open('test.txt','w')
fp.write('%string')

J'obtiens une erreur, %s étant utilisé pour le formatage des chaînes de
caractères.

Je suis donc obligé de passer par une étape intermédiaire pour arriver à
mes fins:
fp = open('test.txt','w')
fp.write('%')
fp.write('string')

Vous conviendrez que ce n'est guère élégant. Je cherche donc un moyen
d'arriver au but en n'utilisant qu'un appel à la méthode 'write'. La
solution doit sans doute être triviale, mais je cale complètement. Ce
serait donc avec plaisir que j'accueillerais vos suggestions.

Thomas Paviot



Ce que tu dis est faux, ce code marche parfaitement, par contre, la vrai
erreur que tu rencontres dans ton code original que tu as modifié avant
de poster ici se corrige en écrivant %% au lieu de % ;)
Thomas Paviot
Le #18151221
Christophe a écrit :
Thomas Paviot a écrit :
Bonjour à tous,

Je souhaite pouvoir écrire dans un fichier la ligne suivante:

%string

Evidemment, si j'écris:
fp = open('test.txt','w')
fp.write('%string')

J'obtiens une erreur, %s étant utilisé pour le formatage des chaînes
de caractères.

Je suis donc obligé de passer par une étape intermédiaire pour arriver
à mes fins:
fp = open('test.txt','w')
fp.write('%')
fp.write('string')

Vous conviendrez que ce n'est guère élégant. Je cherche donc un moyen
d'arriver au but en n'utilisant qu'un appel à la méthode 'write'. La
solution doit sans doute être triviale, mais je cale complètement. Ce
serait donc avec plaisir que j'accueillerais vos suggestions.

Thomas Paviot



Ce que tu dis est faux, ce code marche parfaitement, par contre, la vrai
erreur que tu rencontres dans ton code original que tu as modifié avant
de poster ici se corrige en écrivant %% au lieu de % ;)



Effectivement, j'ai tellement simplifié le problème que j'en ai supprimé
l'erreur originale. Voici donc l'erreur qui fonctionne (!):

Si je veux écrire dans le fichier "test"
%string ma_chaine

alors le code python suivant lève une exception du type TypeError:
fp = open('test.txt','w')
a = 'ma_chaine'
fp.write('%string %s'%a)

La solution préconisée (utilisation de '%%') fonctionne alors parfaitement:
fp.write('%%string %s'%a)

Merci pour vos réponses,

Thomas Paviot
Publicité
Poster une réponse
Anonyme