2014-12-10 2 views
-1

У меня с этим трудное время, и мне было интересно, может ли кто-нибудь помочь, Это результат поиска регулярного выражения python, но мне нужно изменить вывод, но я не уверен, как это сделать?Положить четные линии за нечетные линии? Python Regex

Выход выглядит следующим образом:

Tony1 
, 7684 dogs 
Garry 2 
, 8473 dogs 
sara111 
, 0 dogs 

мне нужно выглядеть следующим образом:

Tony1 , 7684 dogs 
Garry 2 , 8473 dogs 
sara111 , 0 dogs 

Основном принимая Everyting в «четных» линий и добавить их в конце нечетных строк?

Возможно ли это?

+6

Итак, где ваш код и необработанные данные? – Kasramvd

+0

разбить линии на нечетные и четные линии с помощью срезов (odd_lines = lines [1 :: 2], even_lines = lines [:: 2], а затем соединить их с помощью zip (even_lines, odd_lines) –

ответ

0

Это довольно простое использование регулярного выражения.

Поиск: '\r?\n(.*(?:\r?\n|\z))'
Заменить: ' $1'
Флаги: Global

Regex детали:

\r? \n      # Even linebreak 
(       # (1 start), Replacement 
     .*       # All non-linebreak chars 
     (?: 
      \r? \n      # Odd linebreak 
     |        # or, 
      \z       # End of string 
    ) 
)        # (1 end) 
1
import re 
x="""Tony1 
, 7684 dogs 
Garry 2 
, 8473 dogs 
sara111 
, 0 dogs""" 
print re.sub(r"\n([^\n]+(?:\n|$))",r" \1",x) 

Regex: \n([^\n]+(?:\n|$))

Посмотреть демо.

https://regex101.com/r/qB0jV1/5

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