2016-08-16 13 views
0

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

Так что, если файл был:

"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))