2013-04-25 1 views
-1

에서 [과]에 의해 구분 된 필드를 삭제하는 방법을 나는 파일이 모든 라인은 다음과 같다 :파이썬 등록 특급 : 문자열

2013-04-23 16:04:12.276 BLA[16878:950f] 'asdf' : 0, 'asds': 0, 'adf': 0 

은 내가 ,으로 일부 BLA[16878:950f]를 교체해야합니다.

텍스트는 항상 동일하지만, []의 텍스트는 항상 다른 길이를 가질 수 있습니다. 나는 끝에 무엇이 필요

은 다음과 같습니다

2013-04-23 16:04:12.276, 'asdf' : 0, 'asds': 0, 'adf': 0 

어떤 아이디어? 나는 정규 표현식이 매우 좋지 않지만 이것이 유일한 방법이라고 생각합니다.

감사

답변

2
>>> import re 
>>> line = "2013-04-23 16:04:12.276 BLA[16878:950f] 'asdf' : 0, 'asds': 0, 'adf': 0" 
>>> re.sub(r'BLA\[[^\]]+\]', ',', line) 
"2013-04-23 16:04:12.276 , 'asdf' : 0, 'asds': 0, 'adf': 0" 

나는 당신이 실제로 생각 spaceBLA[16878:950f]을 교체 할 생각 : 그래서 그냥 정규 표현식에서 아주 나쁜 해요 당신이

+0

와우, 감사합니다. 이것은 내가 필요로했던 바로 그 것이다. 왜 regexp는 항상 너무 복잡해야합니까? :-) – otmezger

+0

@otmezger'[',']'는 메타 문자이므로 – jamylak

+0

을 수행하기 위해 도망가는 이상한 일이 있습니다. 그 이유는 제가 혼자서 찾을 수 없었던 이유입니다. 그러나 이것은'XCode'가'NSLog'의 결과를 콘솔에 출력하는 방법입니다. – otmezger

1

을하고자하는 경우에 그 공간을 추가 할 수 있지만 나는이 생각 유일한 방법입니다.

FWIW, 그것은 ... 정규 표현식없이

>>> s = "2013-04-23 16:04:12.276 BLA[16878:950f] 'asdf' : 0, 'asds': 0, 'adf': 0" 
>>> i1 = s.find('[') 
>>> i2 = s.find(']') 
>>> '%s,%s' % (s[:i1-4], s[i2+1:]) 
"2013-04-23 16:04:12.276, 'asdf' : 0, 'asds': 0, 'adf': 0" 

을 수행 할 수 있습니다 ...하지만 당신이 [] 문자의 각 하나 개의 발생이 있다고 보장 할 수있는 경우에만 작동합니다 문자열에.

그러나 jamylak의 솔루션은 더욱 신뢰할 수 있습니다.

+0

감사합니다. 앞으로이 작업을보다 쉽게 ​​수행 할 수 있도록 도와 드리겠습니다. – otmezger