0

私はすでにこの質問をしましたが、後で、解釈者が2.1であるため、現在2.1バージョンまでJYTHON CODESを記述しているツールがサポートされていることに気付きました。そのため、高度な手法の一部が機能していません。

icanがより優れた、よりスマートなコードを記述できるように、jythonでさらに学習することに興奮し、新しくなりました。

  1. jythonではwhileループよりもFORLOOPの方が高速です。

  2. XMLファイルから取得した長い文字列があります。これは次のようになります。

CDATA [EMP_ID]]

そして私はこれをしたい

CDATA [TRIM(EMP_ID)]

要するに、変化し続ける列名の周りにTRIM()を追加するだけです。

私が交換を使用した片側を行うために

REPLACE('CDATA [TRIM(')

開き角かっこの後の文字数に関係なく、閉じ角かっこを配置する方法についての回答を検索しています。

IF SUB(LINE、1,52)=='CDATA ['AND THEN REPLACE']]>' WITH')]] >>'を検索すると、私のニーズを解決できると思いました。

iamがSTARTWITHで検索しようとすると、SUBは、行の一部に一致する他の文字列も取得します。

要するに私の質問

  1. それを行う簡単な方法はありますか?

  2. iamが正しい場合、適切な検索手法をどのように使用できますか。

皆さんのおかげで、このフォーラムは、jythonを学び、正しい方法を修正して示すのに大いに役立ちました。

あなたのご親切に感謝します。

4

1 に答える 1

0

この場合、単純な正規表現で十分です。

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()

列名は'[A-Z_]+' regex、1 つ以上の大文字または'_'. re モジュールのドキュメントを参照してください。

于 2009-12-12T08:33:55.827 に答える