JYTHON 2.0 CODE -STRING MANIPULATION и заменить

Поскольку я уже задавал этот вопрос и позже понял, что инструмент, для которого я пишу JYTHON CODES, в настоящее время поддерживается до версии 2.1, поскольку интерпретатор имеет версию 2.1, поэтому некоторые из продвинутых методов не работают.

Теперь я новичок и взволнован, чтобы больше узнавать в jython, чтобы ican мог писать более качественный и умный код.

  1. FOR JOOP быстрее в jython, чем цикл while:

  2. У меня есть длинная строка, взятая из файла XML, который выглядит примерно так

CDATA[EMP_ID]]

и я хочу, чтобы это было

CDATA[TRIM(EMP_ID)]

Короче, просто добавьте TRIM() вокруг ИМЕНИ КОЛОННЫ, которая постоянно меняется,

чтобы сделать одну сторону, я использовал замену

ЗАМЕНА ( 'CDATA[TRIM(')

Я ищу ответ, как поставить закрывающую скобку независимо от количества символов после открытой скобки.

Техника, о которой я подумал, если я ищу IF SUB (LINE,1,52)=='CDATA[ ' И ЗАМЕНИТЕ ']]>' WITH ')]]>>', решая мою проблему.

Поскольку я пытаюсь искать с помощью STARTWITH,SUB получает и другие строки, так как они соответствуют какой-то части строки.

Короче мой вопрос

  1. Есть ли простой способ сделать это?

  2. Если я прав, как можно использовать правильную технику поиска.

Еще раз спасибо всем вам, эти форумы очень помогли мне в изучении jython, исправлении и показе мне правильного пути.

Еще раз спасибо за вашу помощь.

1 ответ

В этом случае может быть достаточно простого регулярного выражения:

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 то есть одна или несколько заглавных букв или '_', Смотрите документацию для повторного модуля.

Другие вопросы по тегам