2014-02-17 3 views
0

У меня есть текст ниже:питона найти и заменить новые строки

Name:John 
Age:23 
Status:Single 
Gender:Male 
Name:Merry 
Age:19 
Gender:Female 
Name:Alex 
Age:20 
Status:Single 
Gender:Male 

Я использовал ниже Notepad ++ найти и заменить

Find:\r\nAge: 
Replace:!Age; 
Find:\r\nStatus: 
Replace:!Status; 
Find:\r\nGender: 
Replace:!Gender; 

иметь выход:

Name:John!Age;23!Status;Single!Gender;Male 
Name:Merry!Age;19!Gender;Female 
Name:Alex!Age;20!Status;Single!Gender;Male 

Как для этого используйте notepad ++ скрипт python вместо поиска и замены

Могу ли я использовать инструкцию ниже для строк, соединяющих некоторые изменения?

editor.pyreplace(r"\r$\n", "!", 0, Editor.INCLUDELINEENDINGS) 

ответ

0

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

\r\n(?!Name) 

и заменить все матчи с !?

0

Я думаю, что ваш самый простой вариант, чтобы заменить все каретки/перевод строки вхождений не предваряется Name с восклицательным знаком:

import re 
with open('input.txt', 'r') as f: 
    print re.sub('\r?\n(?!Name)', '!', f.read()) 

Выход:

Name:John!Age:23!Status:Single!Gender:Male 
Name:Merry!Age:19!Gender:Female 
Name:Alex!Age:20!Status:Single!Gender:Male 
+0

он не работает со мной. Не могли бы вы помочь? Plz – user2792748

+0

Какое сообщение об ошибке вы получаете? – Matt

+0

SyntaxError: недействительный синтаксис – user2792748

0

В Python:

with open('outfile.txt', 'w') as outhandle, open('file.txt', 'r') as inhandle: 
     outhandle.write(inhandle.read().replace('\nAge:','!Age;').replace('\nStatus:','!Status;').replace('\nGender:','!Gender;')) 

Выход будет записан в файл outfile.txt и рассматривается как входной файл как «файл .текст'.

+0

Я не хочу указывать имя файла. возможно ли, чтобы скрипт запускался непосредственно в файле – user2792748

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