Python替换后没有某些字符的字符串

时间:2016-08-16 20:21:14

标签: python regex string replace restrictions

我正在尝试替换文本文件中的字符串,以便它只替换字符串的完全匹配。

所以如果文件是:

"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

我该怎么做?

1 个答案:

答案 0 :(得分: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))
相关问题