2009-12-12 6 views
0

Comme je l'ai déjà posé cette question et je l'ai réalisé plus tard cet outil pour lequel Iam écrit CODES Jython prend actuellement en charge sur la version 2.1 jusqu'à ce que la intepreter est de 2,1 si certains de la technique avancée ne fonctionne pas.Jython 2.0 CODE -string MANIPULATIONS et remplacer

étant maintenant un nouveau et heureux d'apprendre plus Jython afin que ICAN écrire plus mieux et le code smarted.

  1. demande une boucle plus rapide dans Jython que while:

  2. J'ai une longue chaîne prise à partir d'un fichier XML qui ressemble cette

CDATA [EMP_ID]]

et je veux que ce soit

CDATA [TRIM (EMP_ID)]

en bref simplement ajouter TRIM() autour du nom de colonne qui ne cessent de changer,

faire d'un côté j'ai utilisé REMPLACER

REPLACE (« CDATA [TRIM (')

je cherchant la réponse pour mettre le fermer le support sans tenir compte d'un nombre quelconque de caractères après les ouvrir.

La technique que je pensais que si je recherche IF SUB (LINE, 1,52) == 'CDATA [' PUIS REMPLACER ']]>' AVEC ')]] >>' résoudre mes besoins. Comme iam essayant de chercher avec STARTWITH , SUB son obtenir d'autres chaînes aussi car ils correspondent à une partie de la ligne.

En bref ma question

  1. est-il un moyen facile de le faire?

  2. Si c'est bon, comment utiliser la bonne technique de recherche.

Merci encore à vous tous, ce forum ont m'a vraiment beaucoup aidé dans Jython d'apprentissage et la correction et me montrant la bonne façon.

Merci encore pour votre aide.

Répondre

0

Une simple expression régulière peut être suffisante dans ce cas:

import re 

f = open('your_file.xml') 
try: 
    xml = f.read() 
    xml_with_trim = re.sub(r'(CDATA\[)([A-Z_]+)(\]\])', r'\1TRIM(\2)\3', xml) 
    print xml_with_trim 
finally: 
    f.close() 

Le nom de la colonne en utilisant '[A-Z_]+' regex dire appariées, une ou plusieurs lettres majuscules ou '_'. Voir la documentation pour le re module.

+0

Je ne sais pas pourquoi, mais cela ne fonctionne pas encore en me montrant le même résultat sans garniture ajoutée, j'ai utilisé le même code comme indiqué ci-dessus. De toute autre manière. Merci de votre aide – kdev