2017-12-04 18 views
1

내 csv의 열 1은 target_string (바꾸기)이고 열 2는 컨텍스트 (text_column)입니다. 독립형 일 때만 끈을 제거 할 수는 없습니다. \ b를 추가하려고 시도했지만 작동하지 않습니다.변수가있는 re.sub 변수, 전체 문자열 자체 만

텍스트 : "Foo, FOOBAR FOO FOOBAR FOO FOO FOOBAR."

string_column = col [1] 
text_column = col [2] 
string_replacement = "BAR" 

text_column = re.sub(string_column, string_replacement, text_column, flags=re.IGNORECASE) 

내가 얻을 것은 : "BARBAR BAR BARBAR BAR BAR BARBAR."

I는 무엇이 필요 :이의 중복 생각하지 않는다"FOOBAR BAR FOOBAR BAR BAR FOOBAR."

편집 연결된 질문. 그 응답은 나를 도왔을 것이고 여기에 제공된 간단한 해결책보다 훨씬 복잡합니다.

+1

을 (산출 https://regex101.com/r/ aM8tfn/1)? – Gurman

+1

'\ b'가 어떻게 추가되었는지 보여주지 않았고 작동하지 않습니다. –

+1

@MosesKoledoye 유감스럽게도 깨진 코드를 게시하지 않으려 고했습니다. 나는 단지 100 %가 아닌, 작동하도록 만들었습니다. 나는're.sub'에서'string_column' 전후에 \ b를 추가했습니다. 그리고 그것은 오류를주었습니다. –

답변

3

당신은 (아마도) 양쪽에 \b 필요합니다

import re 

string = "Foo, FOOBAR FOO FOOBAR FOO FOO FOOBAR." 

your_string_here = "FOO" 
string_column = r"\b{}\b".format(your_string_here) 
string_replacement = "BAR" 

string = re.sub(string_column, 'BAR', string) 
print(string) 

이이 [`\ bFOO \ b`]처럼

Foo, FOOBAR BAR FOOBAR BAR BAR FOOBAR. 
+0

감사합니다,하지만 변수를 유지해야합니다 ..이 작품을하지만, 대상 문자열은 항상 '풋'..되지 않습니다 .. 왜 변수를'col [1]'로 정의 했는가? –

+1

@ chrissmit.yam90 : 업데이트 된 대답을 보라. – Jan

+0

고마워,이 작품 .. 내가 다른 처리 단계를 추가 할 생각하지 않았다, 나는're.sub' 편집으로 터널링되었다. –