私はすでにこの質問をしましたが、後で、解釈者が2.1であるため、現在2.1バージョンまでJYTHON CODESを記述しているツールがサポートされていることに気付きました。そのため、高度な手法の一部が機能していません。
icanがより優れた、よりスマートなコードを記述できるように、jythonでさらに学習することに興奮し、新しくなりました。
jythonではwhileループよりもFORLOOPの方が高速です。
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は、行の一部に一致する他の文字列も取得します。
要するに私の質問
それを行う簡単な方法はありますか?
iamが正しい場合、適切な検索手法をどのように使用できますか。
皆さんのおかげで、このフォーラムは、jythonを学び、正しい方法を修正して示すのに大いに役立ちました。
あなたのご親切に感謝します。
質問する
929 次
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 に答える