Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

5 réponses
Avatar
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

5 réponses

Avatar
moky
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
Avatar
remi_inconnu
On 13 déc, 16:34, Thomas Paviot wrote:
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
Avatar
Bruno Desthuilliers
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 "%%"
Avatar
Christophe
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 % ;)
Avatar
Thomas Paviot
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