JYTHON 2.0 CODE -STRING MANIPULATION и заменить
Поскольку я уже задавал этот вопрос и позже понял, что инструмент, для которого я пишу JYTHON CODES, в настоящее время поддерживается до версии 2.1, поскольку интерпретатор имеет версию 2.1, поэтому некоторые из продвинутых методов не работают.
Теперь я новичок и взволнован, чтобы больше узнавать в jython, чтобы ican мог писать более качественный и умный код.
FOR JOOP быстрее в jython, чем цикл while:
У меня есть длинная строка, взятая из файла XML, который выглядит примерно так
CDATA[EMP_ID]]
и я хочу, чтобы это было
CDATA[TRIM(EMP_ID)]
Короче, просто добавьте TRIM() вокруг ИМЕНИ КОЛОННЫ, которая постоянно меняется,
чтобы сделать одну сторону, я использовал замену
ЗАМЕНА ( 'CDATA[TRIM(')
Я ищу ответ, как поставить закрывающую скобку независимо от количества символов после открытой скобки.
Техника, о которой я подумал, если я ищу IF SUB (LINE,1,52)=='CDATA[ ' И ЗАМЕНИТЕ ']]>' WITH ')]]>>', решая мою проблему.
Поскольку я пытаюсь искать с помощью STARTWITH,SUB получает и другие строки, так как они соответствуют какой-то части строки.
Короче мой вопрос
Есть ли простой способ сделать это?
Если я прав, как можно использовать правильную технику поиска.
Еще раз спасибо всем вам, эти форумы очень помогли мне в изучении 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
то есть одна или несколько заглавных букв или '_'
, Смотрите документацию для повторного модуля.