2016-08-16 3 views
0

텍스트 파일 내에서 문자열을 바꿔서 문자열의 정확한 일치 만 바꾸려고합니다.파이썬은 그 뒤에 특정 문자가없는 문자열을 대체합니다.

파일이었다 그래서 경우 :

"word" 
"word_1" 
"word1" 
"wordA" 

난 그냥 word test_1와 나는이 할 것 교체하려면 :

text.replace("word", "test_1") 

을하지만이 작업을 수행하여, 나는 또한 다른 모든 word로 대체하고 그 문자열 뒤에있는 다른 텍스트. 그래서 파일은 다음과 같습니다

"test_1" 
"test_1_1" 
"test_11" 
"test_1A" 

나는 단지 어떤 소문자, 대문자가없는 경우 대체 또는 이후에 밑줄 있도록 그래서 나는 단지 word을 대체 할 수 있습니다합니다. 바꾸기가 정확한 일치로만 제한되기를 바랍니다. 따라서 파일에 문자와 숫자가 같거나 밑줄이있는 동일한 텍스트가있는 다른 문자열이 있으면 영향을받지 않습니다. 또한 원하는 그래서 다른 문자는 경우처럼 문자, 숫자 또는 밑줄이 대체됩니다되지 않은 그 후에 경우 :

word" 
word; 
word: 

가 문자, 숫자가 이후 강조하지 않기 때문에 사람들은 잘 될 것 그들. 파일이 될 수 있도록

text.replace("word", "test_1") 
text.replace("word_1", "test_2") 
text.replace("word1", "test_3") 
text.replace("wordA", "test_4") 

:

test_1 
test_2 
test_3 
test_4 

어떻게 이런 짓을 했을까

나는 이것이 내가 같은 다른 것들로 다른 문자열을 대체 할 수 원하는

?

+4

을이 정규 표현식에 대한 작업 같은 소리! – Max

+1

're.sub (r '\ bword \ b', 'test_1', text)'? http://ideone.com/UNEywY를 참조하십시오. –

+0

누구든지 regex 태그를 추가하면 http://stackoverflow.com/questions/15863066/python-regular-expression-match-whole-word –

답변

0

이 시도 :

data = """word 
word_1 
word1 
wordA 
""" 

replacements = { 
    "word": "test_1", 
    "word_1": "test_2", 
    "word1": "test_3", 
    "wordA": "test_4" 
} 

print(reduce(lambda a, b: a.replace(*b), replacements.iteritems(), data)) 
관련 문제