J'ai un fichier texte et dans ce fichier il y est =C3=A9crit, entre autre: =
width:234px
et je veux remplacer par: width:23,4px
J'aimerais un code qui cherche cette donn=C3=A9e et apr=C3=A8s, par un calc=
ul, on ferait:
234/10, et on remplace ce r=C3=A9sultat dans le fichier, sans effacer le re=
ste.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas
Le 18/01/2017 à 01:58, a écrit :
Bonjour,
Bonjour,
J'ai un fichier texte et dans ce fichier il y est écrit, entre autre: width:234px et je veux remplacer par: width:23,4px J'aimerais un code qui cherche cette donnée et après, par un calcul, on ferait: 234/10, et on remplace ce résultat dans le fichier, sans effacer le reste. Voilà!
Il y a tellement de possibilités... Quel est le format de fichier ? Si c'est un format connu, il est préférable d'utiliser des API dédiées pour accéder aux données et les modifier. Sinon : - Le fichier à modifier est-il petit ? - Y a t-il qu'une donnée à modifier ? - Quelle est la structure générale du contenu du fichier ? (une donnée par ligne ? nom toujours séparé de la valeur par ":" ? ...) Un exemple de fichier, s'il n'est pas trop gros, serait utile pour aider efficacement.
Le 18/01/2017 à 01:58, manelw80@gmail.com a écrit :
Bonjour,
Bonjour,
J'ai un fichier texte et dans ce fichier il y est écrit, entre autre: width:234px
et je veux remplacer par: width:23,4px
J'aimerais un code qui cherche cette donnée et après, par un calcul, on ferait:
234/10, et on remplace ce résultat dans le fichier, sans effacer le reste.
Voilà!
Il y a tellement de possibilités...
Quel est le format de fichier ?
Si c'est un format connu, il est préférable d'utiliser des API dédiées
pour accéder aux données et les modifier.
Sinon :
- Le fichier à modifier est-il petit ?
- Y a t-il qu'une donnée à modifier ?
- Quelle est la structure générale du contenu du fichier ? (une donnée
par ligne ? nom toujours séparé de la valeur par ":" ? ...)
Un exemple de fichier, s'il n'est pas trop gros, serait utile pour aider
efficacement.
J'ai un fichier texte et dans ce fichier il y est écrit, entre autre: width:234px et je veux remplacer par: width:23,4px J'aimerais un code qui cherche cette donnée et après, par un calcul, on ferait: 234/10, et on remplace ce résultat dans le fichier, sans effacer le reste. Voilà!
Il y a tellement de possibilités... Quel est le format de fichier ? Si c'est un format connu, il est préférable d'utiliser des API dédiées pour accéder aux données et les modifier. Sinon : - Le fichier à modifier est-il petit ? - Y a t-il qu'une donnée à modifier ? - Quelle est la structure générale du contenu du fichier ? (une donnée par ligne ? nom toujours séparé de la valeur par ":" ? ...) Un exemple de fichier, s'il n'est pas trop gros, serait utile pour aider efficacement.
Le 18-01-2017, nous expliquait dans fr.comp.lang.python () :
Alors, pour le format, c'est du txt. le fichier est petit plusieurs données sont à modifier le fichier est comme un document html, il y a plein de code à l'intérieur pour exemple, le contenu serait comme cela: <html> <button style="background-image:url(b6.gif), width:234px, height:345px"><b>blabla</b></button> <div>...... .....etc, etc </html>
Si la valeur est connue à l'avance (234px) et qu'elle est utilisée uniquement aux endroits qui doivent recevoir la nouvelle valeur alors sed peut suffir: sed -i 's/width:234px, height:345px/width:23.4px, height:345px/g' Attention l'option '-i' remplace directement dans le fichier. Pour vérifier à l'écran avant de remplacer directement dans le fichier, enlever l'option -i: sed 's/width:234px, height:345px/width:23.4px, height:345px/g' -- Ça peut durer jusqu'à toujours A moins que l'on ait le courage De se dire merde un beau jour Et de mettre fin au naufrage -- H.F. Thiéfaine, La dèche, le twist et le reste
Le 18-01-2017, manelw80@gmail.com nous expliquait dans
fr.comp.lang.python
(<42795358-e4b2-4e32-bca8-cf17f1a41646@googlegroups.com>) :
Alors, pour le format, c'est du txt.
le fichier est petit
plusieurs données sont à modifier
le fichier est comme un document html, il y a plein de code à l'intérieur
Si la valeur est connue à l'avance (234px) et qu'elle est utilisée
uniquement aux endroits qui doivent recevoir la nouvelle valeur alors
sed peut suffir:
sed -i 's/width:234px, height:345px/width:23.4px, height:345px/g'
Attention l'option '-i' remplace directement dans le fichier.
Pour vérifier à l'écran avant de remplacer directement dans le fichier,
enlever l'option -i:
sed 's/width:234px, height:345px/width:23.4px, height:345px/g'
--
Ça peut durer jusqu'à toujours
A moins que l'on ait le courage
De se dire merde un beau jour
Et de mettre fin au naufrage
-- H.F. Thiéfaine, La dèche, le twist et le reste
Le 18-01-2017, nous expliquait dans fr.comp.lang.python () :
Alors, pour le format, c'est du txt. le fichier est petit plusieurs données sont à modifier le fichier est comme un document html, il y a plein de code à l'intérieur pour exemple, le contenu serait comme cela: <html> <button style="background-image:url(b6.gif), width:234px, height:345px"><b>blabla</b></button> <div>...... .....etc, etc </html>
Si la valeur est connue à l'avance (234px) et qu'elle est utilisée uniquement aux endroits qui doivent recevoir la nouvelle valeur alors sed peut suffir: sed -i 's/width:234px, height:345px/width:23.4px, height:345px/g' Attention l'option '-i' remplace directement dans le fichier. Pour vérifier à l'écran avant de remplacer directement dans le fichier, enlever l'option -i: sed 's/width:234px, height:345px/width:23.4px, height:345px/g' -- Ça peut durer jusqu'à toujours A moins que l'on ait le courage De se dire merde un beau jour Et de mettre fin au naufrage -- H.F. Thiéfaine, La dèche, le twist et le reste
Nicolas
Le 18/01/2017 à 14:49, a écrit :
Le mercredi 18 janvier 2017 08:25:06 UTC+1, Nicolas a écrit :
Le 18/01/2017 à 01:58, a écrit :
Bonjour,
Bonjour,
J'ai un fichier texte et dans ce fichier il y est écrit, entre autre: width:234px et je veux remplacer par: width:23,4px J'aimerais un code qui cherche cette donnée et après, par un calcul, on ferait: 234/10, et on remplace ce résultat dans le fichier, sans effacer le reste. Voilà!
Il y a tellement de possibilités... Quel est le format de fichier ? Si c'est un format connu, il est préférable d'utiliser des API dédiées pour accéder aux données et les modifier. Sinon : - Le fichier à modifier est-il petit ? - Y a t-il qu'une donnée à modifier ? - Quelle est la structure générale du contenu du fichier ? (une donnée par ligne ? nom toujours séparé de la valeur par ":" ? ...) Un exemple de fichier, s'il n'est pas trop gros, serait utile pour aider efficacement.
Alors, pour le format, c'est du txt. le fichier est petit plusieurs données sont à modifier le fichier est comme un document html, il y a plein de code à l'intérieur pour exemple, le contenu serait comme cela: <html> <button style="background-image:url(b6.gif), width:234px, height:345px"><b>blabla</b></button> <div>...... .....etc, etc </html>
Pour manipuler du HTML, il y a la librairie beautifulsoup. Un exemple d'utilisation ici : http://apprendre-python.com/page-beautifulsoup-html-parser-python-library-xml En texte pur, une expression régulière devrait faire le job. Mais là, je peux pas aider. Les expressions régulières sont encore assez obscures pour moi. Mais j'y travaille... Sinon, y a une méthode bien bourrin mais qui peut faire le job : - Charger tout le texte en mémoire - Rechercher "width:" - Rechercher "px" à partir du résultat précédent - Récupérer la valeur à modifier à partir des résultats précédents - Modifier le texte Un exemple : txt = """ <html> <button style="background-image:url(b6.gif), width:234px, height:345px"><b>blabla</b></button> <div width:24px> </html> """ def new_value(value): return value[:-1] + "," + value[-1:] patern = "width:" start_index = 0 while start_index is not None : index1 = txt.find(patern, start_index) start_index = None if index1 != -1 : index1 = index1+len(patern) index2 = txt.find("px", index1) if index2 != -1 : start_index = index2 value = txt[index1:index2] txt_s = txt[:index1] txt_e = txt[index2:] txt = txt_s + new_value(value) + txt_e print(txt) Attention : c'est du bricolage ni ne fonctionnera pas dans tous les cas. Entre autres, si "width :" est présent dans le fichier, ça ne "matchera" pas avec "width:" et donc ne sera pas traité.
Le 18/01/2017 à 14:49, manelw80@gmail.com a écrit :
Le mercredi 18 janvier 2017 08:25:06 UTC+1, Nicolas a écrit :
Le 18/01/2017 à 01:58, manelw80@gmail.com a écrit :
Bonjour,
Bonjour,
J'ai un fichier texte et dans ce fichier il y est écrit, entre autre: width:234px
et je veux remplacer par: width:23,4px
J'aimerais un code qui cherche cette donnée et après, par un calcul, on ferait:
234/10, et on remplace ce résultat dans le fichier, sans effacer le reste.
Voilà!
Il y a tellement de possibilités...
Quel est le format de fichier ?
Si c'est un format connu, il est préférable d'utiliser des API dédiées
pour accéder aux données et les modifier.
Sinon :
- Le fichier à modifier est-il petit ?
- Y a t-il qu'une donnée à modifier ?
- Quelle est la structure générale du contenu du fichier ? (une donnée
par ligne ? nom toujours séparé de la valeur par ":" ? ...)
Un exemple de fichier, s'il n'est pas trop gros, serait utile pour aider
efficacement.
Alors, pour le format, c'est du txt.
le fichier est petit
plusieurs données sont à modifier
le fichier est comme un document html, il y a plein de code à l'intérieur
Pour manipuler du HTML, il y a la librairie beautifulsoup. Un exemple
d'utilisation ici :
http://apprendre-python.com/page-beautifulsoup-html-parser-python-library-xml
En texte pur, une expression régulière devrait faire le job. Mais là, je
peux pas aider. Les expressions régulières sont encore assez obscures
pour moi. Mais j'y travaille...
Sinon, y a une méthode bien bourrin mais qui peut faire le job :
- Charger tout le texte en mémoire
- Rechercher "width:"
- Rechercher "px" à partir du résultat précédent
- Récupérer la valeur à modifier à partir des résultats précédents
- Modifier le texte
patern = "width:"
start_index = 0
while start_index is not None :
index1 = txt.find(patern, start_index)
start_index = None
if index1 != -1 :
index1 = index1+len(patern)
index2 = txt.find("px", index1)
if index2 != -1 :
start_index = index2
value = txt[index1:index2]
txt_s = txt[:index1]
txt_e = txt[index2:]
txt = txt_s + new_value(value) + txt_e
print(txt)
Attention : c'est du bricolage ni ne fonctionnera pas dans tous les cas.
Entre autres, si "width :" est présent dans le fichier, ça ne "matchera"
pas avec "width:" et donc ne sera pas traité.
Le mercredi 18 janvier 2017 08:25:06 UTC+1, Nicolas a écrit :
Le 18/01/2017 à 01:58, a écrit :
Bonjour,
Bonjour,
J'ai un fichier texte et dans ce fichier il y est écrit, entre autre: width:234px et je veux remplacer par: width:23,4px J'aimerais un code qui cherche cette donnée et après, par un calcul, on ferait: 234/10, et on remplace ce résultat dans le fichier, sans effacer le reste. Voilà!
Il y a tellement de possibilités... Quel est le format de fichier ? Si c'est un format connu, il est préférable d'utiliser des API dédiées pour accéder aux données et les modifier. Sinon : - Le fichier à modifier est-il petit ? - Y a t-il qu'une donnée à modifier ? - Quelle est la structure générale du contenu du fichier ? (une donnée par ligne ? nom toujours séparé de la valeur par ":" ? ...) Un exemple de fichier, s'il n'est pas trop gros, serait utile pour aider efficacement.
Alors, pour le format, c'est du txt. le fichier est petit plusieurs données sont à modifier le fichier est comme un document html, il y a plein de code à l'intérieur pour exemple, le contenu serait comme cela: <html> <button style="background-image:url(b6.gif), width:234px, height:345px"><b>blabla</b></button> <div>...... .....etc, etc </html>
Pour manipuler du HTML, il y a la librairie beautifulsoup. Un exemple d'utilisation ici : http://apprendre-python.com/page-beautifulsoup-html-parser-python-library-xml En texte pur, une expression régulière devrait faire le job. Mais là, je peux pas aider. Les expressions régulières sont encore assez obscures pour moi. Mais j'y travaille... Sinon, y a une méthode bien bourrin mais qui peut faire le job : - Charger tout le texte en mémoire - Rechercher "width:" - Rechercher "px" à partir du résultat précédent - Récupérer la valeur à modifier à partir des résultats précédents - Modifier le texte Un exemple : txt = """ <html> <button style="background-image:url(b6.gif), width:234px, height:345px"><b>blabla</b></button> <div width:24px> </html> """ def new_value(value): return value[:-1] + "," + value[-1:] patern = "width:" start_index = 0 while start_index is not None : index1 = txt.find(patern, start_index) start_index = None if index1 != -1 : index1 = index1+len(patern) index2 = txt.find("px", index1) if index2 != -1 : start_index = index2 value = txt[index1:index2] txt_s = txt[:index1] txt_e = txt[index2:] txt = txt_s + new_value(value) + txt_e print(txt) Attention : c'est du bricolage ni ne fonctionnera pas dans tous les cas. Entre autres, si "width :" est présent dans le fichier, ça ne "matchera" pas avec "width:" et donc ne sera pas traité.