2014-01-23 4 views
2

У меня есть текстовый файл, предназначенный как это:IPython регулярного выражения заменить г п [*] с *

TEXT 
*TEXT;; 

Теперь я хочу, чтобы объединить строки и заменить \r\n[*] с *. Это работает в Notepad ++ с regex \r\n[*], но это регулярное выражение не работает, когда я пытаюсь использовать его в ipython.

Не могли бы вы рассказать мне, какое регулярное выражение мне нужно использовать?

+1

Вы попробовали без '\ r'? т. е. '\ n [*]' – Elisha

+0

Я подтверждаю @Elisha – revo

+0

Я пробовал следующее: print line.replace ("\ n [*]", "") Это не сработало. – user3227381

ответ

3

Это работает:

In [11]: import re 

In [12]: text = "TEXT\r\n*TEXT;;" 

In [14]: re.sub(r'\r\n[*]', '*', text) 
Out[14]: 'TEXT*TEXT;;' 

Пожалуйста, обратите внимание на r (необработанный строка) перед строкой регулярного выражения: это необходимо для того, что управляющие последовательности сохраняются неэкранированными и правильно переданы подстилающим регулярными выражениями компилятора.

+0

На самом деле префикс 'r' не нужен в этом специальном случае (потому что последовательности escape-последовательностей' \ r' и '\ n' регулярных выражений точно соответствуют строковым escape-последовательностям' \ r' и '\ n') , но это хорошая практика. +1 –

+0

Если я попытаюсь выполнить его как этот импорт csv 'import re с открытым (FILENAME) как f: для строки в f: print re.sub (r '\ r \ n [*]', ' * ', line) ' Это не сработает, и я получаю сообщение об ошибке – user3227381

+0

Это не сработает, потому что текст будет разделен на' \ n' в '' для строки в f' части, поэтому '\ r' и' * 'будет разделяться на разные строки (и ваше регулярное выражение никогда не будет соответствовать). –

0

Я не знаю IPython, но попробовать этот RegExp:

/(\r?\n|\r\n?)\*/g 

Here он работал.

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