2015-02-20 2 views
2

Я использую Pandoc для преобразования HTML в LaTeX. Он работает очень хорошо, но я хотел бы постобработать результат, чтобы он соответствовал моим потребностям. Рассмотрим следующий вывод:.Работа с результатом re.findall()

string = r'foo\r\nbar\r\n\begin{longtable}[c]{@{}[email protected]{}}\r\nbar & bar\tabularnewline\r\nbar & bar\r\n\bottomrule\r\n\end{longtable}' 

Что мне нужно сделать, чтобы захватить выравнивание табличной (c опции, конфигурация столбца, а содержание табличной Вот что я сделал до сих пор:

tabular_setup = re.findall(r'\\begin{longtable}\[(.*)\]{(.*)}(.*)\\end{longtable}', string, re.DOTALL) 

if tabular_setup: 
    tabular_align = tabular_setup[0][0] 
    column_setup = tabular_setup[0][1] 
    tab_content = tabular_setup[0][2] 

Так что теперь я могу обновить эти значения в любое значение, я хочу, но потом, как мне обновить эти значения в исходной строке?

+0

какая группа вы хотите обновить? – vks

ответ

2
def repl(matchobj): 
    if matchobj.group(1): 
     return "1" #something 
    if matchobj.group(2): 
     return "1" #something 

new=re.sub(r"\\begin{longtable}\[(.*)\]{(.*)}(.*)\\end{longtable}",repl,string) 

Вы можете обновить группы, использующие re.sub и ваши собственные replacement function.

+0

Спасибо, но ваш метод 'repl()' принимает аргумент, и вы не передаете его в свой 'sub()' вызов – EddaSnorra

+0

@EddaSnorra, он получает неявное сообщение – vks

+0

Регулярное выражение, переданное методом 'sub()' не соответствует, кажется, в то время как он делает в 'findall()' ... Wierd – EddaSnorra

Смежные вопросы