2016-03-18 33 views
1

Birden çok sürekli yeni satır karakterini dönüştürmeye çalışıyorum, ardından büyük harfiyle "____" dosyasına dönüştürerek bunları ayrıştırabilirim. Örneğinpython regex - newline ( n) yerine başka bir şeye dönüştürün

,

i = "Inc\n\nContact" 
i = re.sub(r'([\n]+)([A-Z])+', r"____\2", i) 

In [25]: i 
Out [25]: 'Inc____Contact' 

Bu dize çalışıyor. Onları daha sonra kullanarak halledebilirim. Ancak, bu belirli dizede çalışmaz.

i = "(2 months)\n\nML" 
i = re.sub(r'([\n]+)([A-Z])+', r"____\2", i) 

Out [31]: '(2 months)____L' 

Ben burada eksik sermaye M. yedi?

+3

köşeli parantez içinde '+' yerleştirin - '([\ n] +) ([AZ] +)' - ya da sadece bırakın –

+0

Belirli bir dize nedir? Lütfen gönderinizi – Saleem

+0

@Saleem i = "(2 ay) \ n \ nML" – Aaron

cevap

2

EDIT Bakın, bu yapmalıdır:

(?=[A-Z]), "yeni satır karakterleri ve ardından Büyük Harf Yazısı" ifadesini kullanmaktır. REGEX DEMO.

0

Dene:

import re 
p = re.compile(ur'[\r?\n]') 
test_str = u"(2 months)\n\nML" 
subst = u"_" 

result = re.sub(p, subst, test_str) 

O azaltacaktır dize

(2 months)__ML 

için (\n) ____ için birden sürekli yeni satır karakteri değiştirmek için Demo

1

Eh senin regex ([\n]+)([A-Z])+ bir göz atalım - ([\n]+) bir gruba (- bu alışkanlık satırbaşını \r maç not) içine bir satır birden tekrarlarını eşleşen gayet ilk bölümü. Bununla birlikte, ikinci bölüm ([A-Z])+, hatayı tek bir büyük harfle bir yakalama grubuna eşleştirir - birden çok kez, birden çok Büyük Harfli harf varsa, grubu en son eşleşen büyük harfle sıfırlar, daha sonra bu değiştirici için kullanılır.

izlemeyi deneyin ve

import re  
i = "Inc\n\nABRAXAS" 
i = re.sub(r'([\n]+)([A-Z])+', r"____\2", i) 

Sadece yakalama grup içinde + yerleştirmek, bu yüzden birden büyük harfler içine eşleştirildiği ne olduğunu görün. Ayrıca, bir fark yaratmadığı için, bu büyük harflerin kaçını takip ederseniz, onu dışarıda bırakabilirsiniz. Eğer satır aralıklarında herhangi dizisini değiştirmek istiyorsanız

import re  
i = "Inc\n\nABRAXAS" 
i = re.sub(r'(\n+)([A-Z])', r"____\2", i) 

olursa olsun ne şu - tamamen ([A-Z]) bırakın ve satırbaşı dikkate alınmasını istiyorsanız

import re 
i = "Inc\n\nABRAXAS" 
i = re.sub(r'(\n+)', r"____", i) 

Ayrıca, desen olarak ([\r\n]+) kullanabilirsiniz deneyin

İlgili konular